4.再谈开发权限漏洞
从理论上讲,只要有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).
如果想获取新建用户权限,在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单步执行追踪). |