当前位置: 代码网 > it编程>编程语言>Java > .net # 检查 带有pdf xss

.net # 检查 带有pdf xss

2024年08月03日 Java 我要评论
除了上面的iTextSharp ,还有itext7也是做pdf相关处理的。iTextSharp 已经停止更新两年了,如果要开发建议用itext7,上述代码进攻参考,因为版本不一样,调用接口也会不一样,开发时候请查相关api具体内容。1.解决pdf含javasprct脚本动作,这里是验证pdf内部事件。//应用的地方 写入缓存比较好,因为是非报错判断成功后可进行保存。2.下面介绍一下读取pdf内容的脚本内容,仅做参考。3.如何制作带脚本pdf ,请参考下面博文。

1.解决pdf含javasprct脚本动作,这里是验证pdf内部事件。相关pdf文件下载:

在这里插入图片描述
相关包 itextsharp 5.5.13.4
itextsharp

using itextsharp.text.pdf;
using itextsharp.text.pdf.parser;

     private boolean ispdfsafe(stream stream)
        {
            //  pdfreader reader = new pdfreader(stream);
            using (pdfreader reader = new pdfreader(stream))
            {

                for (int i = 1; i <= reader.numberofpages; i++)
                {
                    pdfdictionary pagedic = reader.getpagen(i);
                    pdfobject obj = pdfreader.getpdfobject(pagedic.get(pdfname.annots));
                    if (obj == null || !obj.isarray())
                        continue;

                    pdfarray annots = (pdfarray)obj;
                    for (int j = 0; j < annots.size; j++)
                    {
                        pdfdictionary annot = annots.getasdict(j);
                        pdfname subtype = annot.getasname(pdfname.subtype);
                        if (pdfname.link.equals(subtype))
                        {
                            pdfdictionary actiondict = annot.getasdict(pdfname.a);
                            if (actiondict != null)
                            {
                                pdfobject action = actiondict.get(pdfname.s);
                                if (action != null)
                                {
                                	//可以判断具体哪些事件被拦截,目前已知事件goto,uri(连接跳转)
                                    console.writeline("action found: " + action.tostring());
                                    return false;
                                }
                            }
                        }
                    }
                }
            }

            return true;
        }

//应用的地方 写入缓存比较好,因为是非报错判断成功后可进行保存

   using (memorystream memorystream = new memorystream(buffer))
                {
                    if (!ispdfsafe(memorystream))
                    {
                      //todo 返回错误信息

                    }
                }
以上就是判断脚本的相关代码。

2.下面介绍一下读取pdf内容的脚本内容,仅做参考。

 for (int i = 1; i <= reader.numberofpages; i++)
            {
                pdfdictionary pagedict = reader.getpagen(i);
                pdfdictionary resourcesdict = pagedict.getasdict(pdfname.resources);
           //     pdfdictionary action = resourcesdict.getasdict(pdfname.action);
          //      pdfdictionary actiondict = javascriptdict.getasdict(pdfname.javascript);
                if (resourcesdict != null)
                {
                    pdfdictionary javascriptdict = resourcesdict.getasdict(pdfname.js);

                    if (javascriptdict != null)
                    {
                        pdfdictionary actiondict = javascriptdict.getasdict(pdfname.javascript);

                        if (actiondict != null)
                        {
                            return false;
                        }
                    }
                }
            }

除了上面的itextsharp ,还有itext7也是做pdf相关处理的。itextsharp 已经停止更新两年了,如果要开发建议用itext7,上述代码进攻参考,因为版本不一样,调用接口也会不一样,开发时候请查相关api具体内容。

代码地址:https://github.com/itext/itextsharp
api地址:https://api.itextpdf.com/itext/dotnet/

3.如何制作带脚本pdf ,请参考下面博文。
https://blog.csdn.net/weixin_50464560/article/details/123841755?ops_request_misc=%257b%2522request%255fid%2522%253a%2522172259109316800188565451%2522%252c%2522scm%2522%253a%252220140713.130102334.pc%255fblog.%2522%257d&request_id=172259109316800188565451&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-5-123841755-null-null.nonecase&utm_term=pdf%20xss&spm=1018.2226.3001.4450

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com