4.再談開發權限漏洞<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
從理論上講,只要有Debug(/H)的權限就應該有機會獲取所有權限,有些系統在生產機上ABAPer居然有SE38,SE71等權限,顯然這提供了一個很好的機會獲取權限.
下面列舉的實例是在不使用程序只修改運行變量的情況下或取權限(basis甚至無從追查).
通常在QAS和PRD server, Basis會使用Tcode SCC4設置不允許更改配置(如下圖No changes allowed表示不允許配置)和不允許程序開發(3 No changes to Repository and cross-client Customizing objs).這些配置保存在表T000中.
下面是基於用戶有SE38權限後並假設如上圖已經限制了不允許開發如何繞過此限制獲得開發權限的例子.
爲此找到程序LSTRDU34(SE37:TRINT_CORR_CHECK)和LSTRDU44(SE37:TRINT_CORR_INSERT)設置斷點更改返回值饒過相關判斷就可直接在QAS和PRD server上開發.
如圖3.6.4-1中設置斷點,當程序運行到此,只要將LV_SUBRC設置0即可.
同樣,如圖3.6.4-2,設置斷點將SY-SUBRC改成0就可.
注意:1:修改程序:
2: 激活程序
假設ABAPer在PRD有SE38權限,在創建程序時會提示不能改變資源庫和配置,可按display(如圖3.6.4-3)然後按圖3.6.4-1和圖3.6.4-2的方法在每次運行到程序LSTRDU34和LSTRDU44時修改LV_SUBRC和SY-SUBRC值爲0程序就能被創建並被激活(注意你可能需要多次修改,出現提示對話框按Display就可).
我所說只要有/H調試權限和SE38(或SE37)就可獲得全部權限也是基於這樣的思路,打開/H,然後執行SE38設置斷點修改內存變量(如過你願意慢慢單步執行到LSUSEU11,下面的動作都可節省下來,直接使用/H就可滿足要求)
如圖3.6.4-4,假設在PRD環境中你有SE38權限,你沒有SCC4修改Client屬性的權限,在LSUSEU11如圖設置斷點,然後將sy-subrc改成0,於是你就擁有了SCC4的權限,這種方法就是你並不需要使用程序只要修改變量就可獲得Tcode權限.
1要真正執行一個未被授權的Tcode除了更改圖3.6.4-4,如其有多個screen(程序中經常有Call **Tcode skip first screen),可能其它授權還要檢測,理論上,只要你有耐心依然可獲得全部權限. 2下面是一個假設你可使用SU01(只能進first screen但不能create,change user的破解方法.) 如圖3.6.4-4-1,想獲取修改用戶權限在LSUU0U02When ‘CHANGE’時修改rc = 0即可(SE37: SUSR_USER_MAINT_WITH_DIALOG). <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 如果想獲取新建用戶權限,在LSUU0U02找到when 'CREA'.將rc值改成0就可.然後在找到保存時的include程序(讀者自行去找),既然能建立user了,授權給SAP_ALL當然就獲得了所有權限. |
1要真正執行一個未被授權的Tcode除了更改圖3.6.4-4,如其有多個screen(程序中經常有Call **Tcode skip first screen),可能其它授權還要檢測,理論上,只要你有耐心依然可獲得全部權限. 2下面是一個假設你可使用SU01(只能進first screen但不能create,change user的破解方法.) 如圖3.6.4-4-1,想獲取修改用戶權限在LSUU0U02When ‘CHANGE’時修改rc = 0即可(SE37: SUSR_USER_MAINT_WITH_DIALOG).
如果想獲取新建用戶權限,在LSUU0U02找到when 'CREA'.將rc值改成0就可.然後在找到保存時的include程序(讀者自行去找),既然能建立user了,授權給SAP_ALL當然就獲得了所有權限. |
可以任意修改scrip form嗎,當然可以,如果想建立更改Scrip Form(SE71)可在LSTRDU39或TR_OBJECT_CHECK(SE37)設置斷點.
如圖3.6.4-5.
誰真正擁有SAP的權限,我想高明的ABAPer是可獲得所需權限的,畢竟系統是用程 序寫出的,還有什麼用程序做不到的呢? 1.上面描述瞭如何繞過相應限制建立程序,使用上面的方法可直接更改SAP標準程序,採用這種方法是甚至連Access Key都不要,就是說如在PRD生產環境,如果用戶有SA38和/H權限,在LSTRDU34和LSTRDU44設置斷點然後修改返回值就可 在不需要Access Key的情況下直接完全修改標準程序. 這樣將非常危險,因爲就是繞過Access Key (修改LSKEYF00)可在標準程序中Insert,Delete行,起碼還不可想修改自寫程序一樣完全修改程序還能有跟蹤.
通常在QAS和PRD server會象圖3.6.4一樣設置禁止IMG和開發,這時當使用SE38,SE71,Smartforms等Tcode時甚至不會去檢測Access Key,使用上面的方法可輕鬆進行IMG和開發. 2.如何繞過限制去配置(IMG)系統,讀者可自行研究. 3. 試着去除任何人在PRD的SE38權限和/H(S_DEVLOP 4. LSTRDU33(SE37: TR_EDIT_CHECK_OBJECTS_KEYS)是用來檢測ABAP object可否Edit的,只要在此設置斷點即可. LSTRDU34, LSTRDU44, LSTRDU39會被其調用(使用F5單步執行追蹤). |